mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-02-02 06:33:30 +00:00
Detect GLSL version
This commit is contained in:
parent
ab8fe7405b
commit
1f3086ef48
5 changed files with 33 additions and 5 deletions
|
@ -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)
|
||||
|
|
|
@ -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 *);
|
||||
|
|
|
@ -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" ) )
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -1606,6 +1606,9 @@ typedef struct {
|
|||
qboolean multiDrawArrays;
|
||||
qboolean occlusionQuery;
|
||||
|
||||
int glslMajorVersion;
|
||||
int glslMinorVersion;
|
||||
|
||||
memInfo_t memInfo;
|
||||
|
||||
qboolean framebufferObject;
|
||||
|
|
Loading…
Reference in a new issue