Detect GLSL version

This commit is contained in:
James Canete 2012-04-16 09:30:30 +00:00
parent ab8fe7405b
commit 1f3086ef48
5 changed files with 33 additions and 5 deletions

View file

@ -1,4 +1,5 @@
- Use GL_ext_draw_range_elements
- Detect GLSL version
- Use GL_EXT_draw_range_elements
- Reserve FBOs before shaders, as recommended in nvidia docs
- Minor tweak in VBO allocation.
- Update tr_font.c to ioq3 latest (r2232)

View file

@ -46,6 +46,12 @@ extern void (APIENTRY * qglDrawRangeElementsEXT) (GLenum mode, GLuint start,
extern void (APIENTRY * qglMultiDrawArraysEXT) (GLenum, GLint *, GLsizei *, GLsizei);
extern void (APIENTRY * qglMultiDrawElementsEXT) (GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei);
// GL_ARB_shading_language_100
#ifndef GL_ARB_shading_language_100
#define GL_ARB_shading_language_100
#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C
#endif
// GL_ARB_vertex_program
extern void (APIENTRY * qglVertexAttrib4fARB) (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
extern void (APIENTRY * qglVertexAttrib4fvARB) (GLuint, const GLfloat *);

View file

@ -196,7 +196,7 @@ void GLimp_InitExtraExtensions()
qglMultiDrawElementsEXT = NULL;
if( GLimp_HaveExtension( extension ) )
{
qglDrawRangeElementsEXT = (PFNGLMULTIDRAWARRAYSEXTPROC) SDL_GL_GetProcAddress("glDrawRangeElementsEXT");
qglDrawRangeElementsEXT = (void *) SDL_GL_GetProcAddress("glDrawRangeElementsEXT");
if ( r_ext_draw_range_elements->integer)
glRefConfig.drawRangeElements = qtrue;
@ -415,6 +415,24 @@ void GLimp_InitExtraExtensions()
ri.Error(ERR_FATAL, result[2], extension);
}
// GL_ARB_shading_language_100
extension = "GL_ARB_shading_language_100";
glRefConfig.textureFloat = qfalse;
if( GLimp_HaveExtension( extension ) )
{
char version[256];
Q_strncpyz( version, (char *) qglGetString (GL_SHADING_LANGUAGE_VERSION_ARB), sizeof( version ) );
sscanf(version, "%d.%d", &glRefConfig.glslMajorVersion, &glRefConfig.glslMinorVersion);
ri.Printf(PRINT_ALL, "...using GLSL version %s\n", version);
}
else
{
ri.Error(ERR_FATAL, result[2], extension);
}
glRefConfig.memInfo = MI_NONE;
if( GLimp_HaveExtension( "GL_NVX_gpu_memory_info" ) )

View file

@ -747,7 +747,7 @@ static void GLSL_GetShaderHeader( GLenum shaderType, const GLcharARB *extra, cha
dest[0] = '\0';
// HACK: abuse the GLSL preprocessor to turn GLSL 1.20 shaders into 1.30 ones
if(0) //(glConfig.driverType == GLDRV_OPENGL3)
if(glRefConfig.glslMajorVersion > 1 || (glRefConfig.glslMajorVersion == 1 && glRefConfig.glslMinorVersion >= 30))
{
Q_strcat(dest, size, "#version 130\n");

View file

@ -1606,6 +1606,9 @@ typedef struct {
qboolean multiDrawArrays;
qboolean occlusionQuery;
int glslMajorVersion;
int glslMinorVersion;
memInfo_t memInfo;
qboolean framebufferObject;