[ioquake3] 05/59: OpenGL2: Require OpenGL 2.0.
Simon McVittie
smcv at debian.org
Wed Sep 21 19:56:57 UTC 2016
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to branch debian/master
in repository ioquake3.
commit 251c98368132fad43245f9c1c9cbe23bec7bcf40
Author: SmileTheory <SmileTheory at gmail.com>
Date: Sun Jul 24 21:29:13 2016 -0700
OpenGL2: Require OpenGL 2.0.
---
code/renderercommon/qgl.h | 168 ++++---------
code/renderergl2/tr_backend.c | 6 +-
code/renderergl2/tr_dsa.c | 38 +--
code/renderergl2/tr_dsa.h | 2 +-
code/renderergl2/tr_extensions.c | 497 +++++++++-----------------------------
code/renderergl2/tr_glsl.c | 126 +++++-----
code/renderergl2/tr_init.c | 8 +-
code/renderergl2/tr_local.h | 10 +-
code/renderergl2/tr_postprocess.c | 4 +-
code/renderergl2/tr_shade.c | 6 +-
code/renderergl2/tr_surface.c | 16 +-
code/renderergl2/tr_vbo.c | 68 +++---
12 files changed, 316 insertions(+), 633 deletions(-)
diff --git a/code/renderercommon/qgl.h b/code/renderercommon/qgl.h
index 46ece09..9c514a9 100644
--- a/code/renderercommon/qgl.h
+++ b/code/renderercommon/qgl.h
@@ -377,102 +377,59 @@ extern void (APIENTRYP qglUnlockArraysEXT) (void);
#define qglVertexPointer glVertexPointer
#define qglViewport glViewport
-// GL_EXT_draw_range_elements
-extern void (APIENTRY * qglDrawRangeElementsEXT) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-
-// GL_EXT_multi_draw_arrays
-extern void (APIENTRY * qglMultiDrawArraysEXT) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-extern void (APIENTRY * qglMultiDrawElementsEXT) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-
-// 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 *);
-extern void (APIENTRY * qglVertexAttribPointerARB) (GLuint index, GLint size, GLenum type, GLboolean normalized,
- GLsizei stride, const GLvoid * pointer);
-extern void (APIENTRY * qglEnableVertexAttribArrayARB) (GLuint index);
-extern void (APIENTRY * qglDisableVertexAttribArrayARB) (GLuint index);
-
-// GL_ARB_vertex_buffer_object
-extern void (APIENTRY * qglBindBufferARB) (GLenum target, GLuint buffer);
-extern void (APIENTRY * qglDeleteBuffersARB) (GLsizei n, const GLuint * buffers);
-extern void (APIENTRY * qglGenBuffersARB) (GLsizei n, GLuint * buffers);
-extern GLboolean(APIENTRY * qglIsBufferARB) (GLuint buffer);
-extern void (APIENTRY * qglBufferDataARB) (GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
-extern void (APIENTRY * qglBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
-extern void (APIENTRY * qglGetBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data);
-extern void (APIENTRY * qglGetBufferParameterivARB) (GLenum target, GLenum pname, GLint * params);
-extern void (APIENTRY * qglGetBufferPointervARB) (GLenum target, GLenum pname, GLvoid * *params);
-
-// GL_ARB_shader_objects
-extern void (APIENTRY * qglDeleteObjectARB) (GLhandleARB obj);
-extern GLhandleARB(APIENTRY * qglGetHandleARB) (GLenum pname);
-extern void (APIENTRY * qglDetachObjectARB) (GLhandleARB containerObj, GLhandleARB attachedObj);
-extern GLhandleARB(APIENTRY * qglCreateShaderObjectARB) (GLenum shaderType);
-extern void (APIENTRY * qglShaderSourceARB) (GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string,
- const GLint * length);
-extern void (APIENTRY * qglCompileShaderARB) (GLhandleARB shaderObj);
-extern GLhandleARB(APIENTRY * qglCreateProgramObjectARB) (void);
-extern void (APIENTRY * qglAttachObjectARB) (GLhandleARB containerObj, GLhandleARB obj);
-extern void (APIENTRY * qglLinkProgramARB) (GLhandleARB programObj);
-extern void (APIENTRY * qglUseProgramObjectARB) (GLhandleARB programObj);
-extern void (APIENTRY * qglValidateProgramARB) (GLhandleARB programObj);
-extern void (APIENTRY * qglUniform1fARB) (GLint location, GLfloat v0);
-extern void (APIENTRY * qglUniform2fARB) (GLint location, GLfloat v0, GLfloat v1);
-extern void (APIENTRY * qglUniform3fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-extern void (APIENTRY * qglUniform4fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-extern void (APIENTRY * qglUniform1iARB) (GLint location, GLint v0);
-extern void (APIENTRY * qglUniform2iARB) (GLint location, GLint v0, GLint v1);
-extern void (APIENTRY * qglUniform3iARB) (GLint location, GLint v0, GLint v1, GLint v2);
-extern void (APIENTRY * qglUniform4iARB) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-extern void (APIENTRY * qglUniform1fvARB) (GLint location, GLsizei count, const GLfloat * value);
-extern void (APIENTRY * qglUniform2fvARB) (GLint location, GLsizei count, const GLfloat * value);
-extern void (APIENTRY * qglUniform3fvARB) (GLint location, GLsizei count, const GLfloat * value);
-extern void (APIENTRY * qglUniform4fvARB) (GLint location, GLsizei count, const GLfloat * value);
-extern void (APIENTRY * qglUniform2ivARB) (GLint location, GLsizei count, const GLint * value);
-extern void (APIENTRY * qglUniform3ivARB) (GLint location, GLsizei count, const GLint * value);
-extern void (APIENTRY * qglUniform4ivARB) (GLint location, GLsizei count, const GLint * value);
-extern void (APIENTRY * qglUniformMatrix2fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
-extern void (APIENTRY * qglUniformMatrix3fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
-extern void (APIENTRY * qglUniformMatrix4fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
-extern void (APIENTRY * qglGetObjectParameterfvARB) (GLhandleARB obj, GLenum pname, GLfloat * params);
-extern void (APIENTRY * qglGetObjectParameterivARB) (GLhandleARB obj, GLenum pname, GLint * params);
-extern void (APIENTRY * qglGetInfoLogARB) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog);
-extern void (APIENTRY * qglGetAttachedObjectsARB) (GLhandleARB containerObj, GLsizei maxCount, GLsizei * count,
- GLhandleARB * obj);
-extern GLint(APIENTRY * qglGetUniformLocationARB) (GLhandleARB programObj, const GLcharARB * name);
-extern void (APIENTRY * qglGetActiveUniformARB) (GLhandleARB programObj, GLuint index, GLsizei maxIndex, GLsizei * length,
- GLint * size, GLenum * type, GLcharARB * name);
-extern void (APIENTRY * qglGetUniformfvARB) (GLhandleARB programObj, GLint location, GLfloat * params);
-extern void (APIENTRY * qglGetUniformivARB) (GLhandleARB programObj, GLint location, GLint * params);
-extern void (APIENTRY * qglGetShaderSourceARB) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source);
-
-// GL_ARB_vertex_shader
-extern void (APIENTRY * qglBindAttribLocationARB) (GLhandleARB programObj, GLuint index, const GLcharARB * name);
-extern void (APIENTRY * qglGetActiveAttribARB) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length,
- GLint * size, GLenum * type, GLcharARB * name);
-extern GLint(APIENTRY * qglGetAttribLocationARB) (GLhandleARB programObj, const GLcharARB * name);
-
-// GL_ARB_texture_compression
-extern void (APIENTRY * qglCompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
- GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-extern void (APIENTRY * qglCompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
- GLint border, GLsizei imageSize, const GLvoid *data);
-extern void (APIENTRY * qglCompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border,
- GLsizei imageSize, const GLvoid *data);
-extern void (APIENTRY * qglCompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-extern void (APIENTRY * qglCompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
- GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-extern void (APIENTRY * qglCompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format,
- GLsizei imageSize, const GLvoid *data);
-extern void (APIENTRY * qglGetCompressedTexImageARB)(GLenum target, GLint lod,
- GLvoid *img);
+// OpenGL 1.2, was GL_EXT_draw_range_elements
+extern void (APIENTRY * qglDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+
+// OpenGL 1.3, was GL_ARB_texture_compression
+extern void (APIENTRY * qglCompressedTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+extern void (APIENTRY * qglCompressedTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+
+// OpenGL 1.4, was GL_EXT_multi_draw_arrays
+extern void (APIENTRY * qglMultiDrawElements) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+
+// OpenGL 1.5, was GL_ARB_vertex_buffer_object and GL_ARB_occlusion_query
+extern void (APIENTRY * qglGenQueries) (GLsizei n, GLuint *ids);
+extern void (APIENTRY * qglDeleteQueries) (GLsizei n, const GLuint *ids);
+extern void (APIENTRY * qglBeginQuery) (GLenum target, GLuint id);
+extern void (APIENTRY * qglEndQuery) (GLenum target);
+extern void (APIENTRY * qglGetQueryObjectiv) (GLuint id, GLenum pname, GLint *params);
+extern void (APIENTRY * qglGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint *params);
+extern void (APIENTRY * qglBindBuffer) (GLenum target, GLuint buffer);
+extern void (APIENTRY * qglDeleteBuffers) (GLsizei n, const GLuint *buffers);
+extern void (APIENTRY * qglGenBuffers) (GLsizei n, GLuint *buffers);
+extern void (APIENTRY * qglBufferData) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
+extern void (APIENTRY * qglBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
+
+// OpenGL 2.0, was GL_ARB_shading_language_100, GL_ARB_vertex_program, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+extern void (APIENTRY * qglAttachShader) (GLuint program, GLuint shader);
+extern void (APIENTRY * qglBindAttribLocation) (GLuint program, GLuint index, const GLchar *name);
+extern void (APIENTRY * qglCompileShader) (GLuint shader);
+extern GLuint (APIENTRY * qglCreateProgram) (void);
+extern GLuint (APIENTRY * qglCreateShader) (GLenum type);
+extern void (APIENTRY * qglDeleteProgram) (GLuint program);
+extern void (APIENTRY * qglDeleteShader) (GLuint shader);
+extern void (APIENTRY * qglDetachShader) (GLuint program, GLuint shader);
+extern void (APIENTRY * qglDisableVertexAttribArray) (GLuint index);
+extern void (APIENTRY * qglEnableVertexAttribArray) (GLuint index);
+extern void (APIENTRY * qglGetActiveUniform) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+extern void (APIENTRY * qglGetProgramiv) (GLuint program, GLenum pname, GLint *params);
+extern void (APIENTRY * qglGetProgramInfoLog) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+extern void (APIENTRY * qglGetShaderiv) (GLuint shader, GLenum pname, GLint *params);
+extern void (APIENTRY * qglGetShaderInfoLog) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+extern void (APIENTRY * qglGetShaderSource) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+extern GLint (APIENTRY * qglGetUniformLocation) (GLuint program, const GLchar *name);
+extern void (APIENTRY * qglLinkProgram) (GLuint program);
+extern void (APIENTRY * qglShaderSource) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+extern void (APIENTRY * qglUseProgram) (GLuint program);
+extern void (APIENTRY * qglUniform1f) (GLint location, GLfloat v0);
+extern void (APIENTRY * qglUniform2f) (GLint location, GLfloat v0, GLfloat v1);
+extern void (APIENTRY * qglUniform3f) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+extern void (APIENTRY * qglUniform4f) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+extern void (APIENTRY * qglUniform1i) (GLint location, GLint v0);
+extern void (APIENTRY * qglUniform1fv) (GLint location, GLsizei count, const GLfloat *value);
+extern void (APIENTRY * qglUniformMatrix4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+extern void (APIENTRY * qglValidateProgram) (GLuint program);
+extern void (APIENTRY * qglVertexAttribPointer) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
// GL_NVX_gpu_memory_info
#ifndef GL_NVX_gpu_memory_info
@@ -609,25 +566,6 @@ extern void (APIENTRY * qglGenerateMipmapEXT)(GLenum target);
#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1
#endif
-// GL_ARB_occlusion_query
-extern void (APIENTRY * qglGenQueriesARB)(GLsizei n, GLuint *ids);
-extern void (APIENTRY * qglDeleteQueriesARB)(GLsizei n, const GLuint *ids);
-extern GLboolean (APIENTRY * qglIsQueryARB)(GLuint id);
-extern void (APIENTRY * qglBeginQueryARB)(GLenum target, GLuint id);
-extern void (APIENTRY * qglEndQueryARB)(GLenum target);
-extern void (APIENTRY * qglGetQueryivARB)(GLenum target, GLenum pname, GLint *params);
-extern void (APIENTRY * qglGetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params);
-extern void (APIENTRY * qglGetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params);
-
-#ifndef GL_ARB_occlusion_query
-#define GL_ARB_occlusion_query
-#define GL_SAMPLES_PASSED_ARB 0x8914
-#define GL_QUERY_COUNTER_BITS_ARB 0x8864
-#define GL_CURRENT_QUERY_ARB 0x8865
-#define GL_QUERY_RESULT_ARB 0x8866
-#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867
-#endif
-
// GL_EXT_framebuffer_blit
extern void (APIENTRY * qglBlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
diff --git a/code/renderergl2/tr_backend.c b/code/renderergl2/tr_backend.c
index 5a0eb6a..f9dcd03 100644
--- a/code/renderergl2/tr_backend.c
+++ b/code/renderergl2/tr_backend.c
@@ -644,7 +644,7 @@ void RB_RenderDrawSurfList( drawSurf_t *drawSurfs, int numDrawSurfs ) {
}
if (inQuery) {
- qglEndQueryARB(GL_SAMPLES_PASSED_ARB);
+ qglEndQuery(GL_SAMPLES_PASSED);
}
if (glRefConfig.framebufferObject)
@@ -1195,14 +1195,14 @@ const void *RB_DrawSurfs( const void *data ) {
if (glRefConfig.occlusionQuery)
{
tr.sunFlareQueryActive[tr.sunFlareQueryIndex] = qtrue;
- qglBeginQueryARB(GL_SAMPLES_PASSED_ARB, tr.sunFlareQuery[tr.sunFlareQueryIndex]);
+ qglBeginQuery(GL_SAMPLES_PASSED, tr.sunFlareQuery[tr.sunFlareQueryIndex]);
}
RB_DrawSun(0.3, tr.sunFlareShader);
if (glRefConfig.occlusionQuery)
{
- qglEndQueryARB(GL_SAMPLES_PASSED_ARB);
+ qglEndQuery(GL_SAMPLES_PASSED);
}
FBO_Bind(oldFbo);
diff --git a/code/renderergl2/tr_dsa.c b/code/renderergl2/tr_dsa.c
index 9cd481b..4ea7699 100644
--- a/code/renderergl2/tr_dsa.c
+++ b/code/renderergl2/tr_dsa.c
@@ -124,7 +124,7 @@ GLvoid APIENTRY GLDSA_CompressedTextureImage2D(GLuint texture, GLenum target, G
GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
{
GL_BindMultiTexture(glDsaState.texunit, target, texture);
- qglCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data);
+ qglCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);
}
GLvoid APIENTRY GLDSA_CompressedTextureSubImage2D(GLuint texture, GLenum target, GLint level,
@@ -132,7 +132,7 @@ GLvoid APIENTRY GLDSA_CompressedTextureSubImage2D(GLuint texture, GLenum target,
GLsizei imageSize, const GLvoid *data)
{
GL_BindMultiTexture(glDsaState.texunit, target, texture);
- qglCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data);
+ qglCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);
}
GLvoid APIENTRY GLDSA_GenerateTextureMipmap(GLuint texture, GLenum target)
@@ -143,66 +143,66 @@ GLvoid APIENTRY GLDSA_GenerateTextureMipmap(GLuint texture, GLenum target)
void GL_BindNullProgram()
{
- qglUseProgramObjectARB(0);
+ qglUseProgram(0);
glDsaState.program = 0;
}
-int GL_UseProgramObject(GLuint program)
+int GL_UseProgram(GLuint program)
{
if (glDsaState.program == program)
return 0;
- qglUseProgramObjectARB(program);
+ qglUseProgram(program);
glDsaState.program = program;
return 1;
}
GLvoid APIENTRY GLDSA_ProgramUniform1i(GLuint program, GLint location, GLint v0)
{
- GL_UseProgramObject(program);
- qglUniform1iARB(location, v0);
+ GL_UseProgram(program);
+ qglUniform1i(location, v0);
}
GLvoid APIENTRY GLDSA_ProgramUniform1f(GLuint program, GLint location, GLfloat v0)
{
- GL_UseProgramObject(program);
- qglUniform1fARB(location, v0);
+ GL_UseProgram(program);
+ qglUniform1f(location, v0);
}
GLvoid APIENTRY GLDSA_ProgramUniform2f(GLuint program, GLint location,
GLfloat v0, GLfloat v1)
{
- GL_UseProgramObject(program);
- qglUniform2fARB(location, v0, v1);
+ GL_UseProgram(program);
+ qglUniform2f(location, v0, v1);
}
GLvoid APIENTRY GLDSA_ProgramUniform3f(GLuint program, GLint location,
GLfloat v0, GLfloat v1, GLfloat v2)
{
- GL_UseProgramObject(program);
- qglUniform3fARB(location, v0, v1, v2);
+ GL_UseProgram(program);
+ qglUniform3f(location, v0, v1, v2);
}
GLvoid APIENTRY GLDSA_ProgramUniform4f(GLuint program, GLint location,
GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
- GL_UseProgramObject(program);
- qglUniform4fARB(location, v0, v1, v2, v3);
+ GL_UseProgram(program);
+ qglUniform4f(location, v0, v1, v2, v3);
}
GLvoid APIENTRY GLDSA_ProgramUniform1fv(GLuint program, GLint location,
GLsizei count, const GLfloat *value)
{
- GL_UseProgramObject(program);
- qglUniform1fvARB(location, count, value);
+ GL_UseProgram(program);
+ qglUniform1fv(location, count, value);
}
GLvoid APIENTRY GLDSA_ProgramUniformMatrix4fv(GLuint program, GLint location,
GLsizei count, GLboolean transpose,
const GLfloat *value)
{
- GL_UseProgramObject(program);
- qglUniformMatrix4fvARB(location, count, transpose, value);
+ GL_UseProgram(program);
+ qglUniformMatrix4fv(location, count, transpose, value);
}
void GL_BindNullFramebuffers()
diff --git a/code/renderergl2/tr_dsa.h b/code/renderergl2/tr_dsa.h
index e820fe0..5e68caf 100644
--- a/code/renderergl2/tr_dsa.h
+++ b/code/renderergl2/tr_dsa.h
@@ -44,7 +44,7 @@ GLvoid APIENTRY GLDSA_CompressedTextureSubImage2D(GLuint texture, GLenum target,
GLvoid APIENTRY GLDSA_GenerateTextureMipmap(GLuint texture, GLenum target);
void GL_BindNullProgram(void);
-int GL_UseProgramObject(GLuint program);
+int GL_UseProgram(GLuint program);
GLvoid APIENTRY GLDSA_ProgramUniform1i(GLuint program, GLint location, GLint v0);
GLvoid APIENTRY GLDSA_ProgramUniform1f(GLuint program, GLint location, GLfloat v0);
diff --git a/code/renderergl2/tr_extensions.c b/code/renderergl2/tr_extensions.c
index faa0114..d57ed6e 100644
--- a/code/renderergl2/tr_extensions.c
+++ b/code/renderergl2/tr_extensions.c
@@ -30,101 +30,59 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "tr_local.h"
#include "tr_dsa.h"
-// GL_EXT_draw_range_elements
-void (APIENTRY * qglDrawRangeElementsEXT) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
-
-// GL_EXT_multi_draw_arrays
-void (APIENTRY * qglMultiDrawArraysEXT) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
-void (APIENTRY * qglMultiDrawElementsEXT) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-
-// GL_ARB_vertex_shader
-void (APIENTRY * qglBindAttribLocationARB) (GLhandleARB programObj, GLuint index, const GLcharARB * name);
-void (APIENTRY * qglGetActiveAttribARB) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length,
- GLint * size, GLenum * type, GLcharARB * name);
-GLint(APIENTRY * qglGetAttribLocationARB) (GLhandleARB programObj, const GLcharARB * name);
-
-// GL_ARB_vertex_program
-void (APIENTRY * qglVertexAttrib4fARB) (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-void (APIENTRY * qglVertexAttrib4fvARB) (GLuint, const GLfloat *);
-void (APIENTRY * qglVertexAttribPointerARB) (GLuint index, GLint size, GLenum type, GLboolean normalized,
- GLsizei stride, const GLvoid * pointer);
-void (APIENTRY * qglEnableVertexAttribArrayARB) (GLuint index);
-void (APIENTRY * qglDisableVertexAttribArrayARB) (GLuint index);
-
-// GL_ARB_vertex_buffer_object
-void (APIENTRY * qglBindBufferARB) (GLenum target, GLuint buffer);
-void (APIENTRY * qglDeleteBuffersARB) (GLsizei n, const GLuint * buffers);
-void (APIENTRY * qglGenBuffersARB) (GLsizei n, GLuint * buffers);
-
-GLboolean(APIENTRY * qglIsBufferARB) (GLuint buffer);
-void (APIENTRY * qglBufferDataARB) (GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage);
-void (APIENTRY * qglBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data);
-void (APIENTRY * qglGetBufferSubDataARB) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data);
-
-void (APIENTRY * qglGetBufferParameterivARB) (GLenum target, GLenum pname, GLint * params);
-void (APIENTRY * qglGetBufferPointervARB) (GLenum target, GLenum pname, GLvoid * *params);
-
-// GL_ARB_shader_objects
-void (APIENTRY * qglDeleteObjectARB) (GLhandleARB obj);
-
-GLhandleARB(APIENTRY * qglGetHandleARB) (GLenum pname);
-void (APIENTRY * qglDetachObjectARB) (GLhandleARB containerObj, GLhandleARB attachedObj);
-
-GLhandleARB(APIENTRY * qglCreateShaderObjectARB) (GLenum shaderType);
-void (APIENTRY * qglShaderSourceARB) (GLhandleARB shaderObj, GLsizei count, const GLcharARB * *string,
- const GLint * length);
-void (APIENTRY * qglCompileShaderARB) (GLhandleARB shaderObj);
-
-GLhandleARB(APIENTRY * qglCreateProgramObjectARB) (void);
-void (APIENTRY * qglAttachObjectARB) (GLhandleARB containerObj, GLhandleARB obj);
-void (APIENTRY * qglLinkProgramARB) (GLhandleARB programObj);
-void (APIENTRY * qglUseProgramObjectARB) (GLhandleARB programObj);
-void (APIENTRY * qglValidateProgramARB) (GLhandleARB programObj);
-void (APIENTRY * qglUniform1fARB) (GLint location, GLfloat v0);
-void (APIENTRY * qglUniform2fARB) (GLint location, GLfloat v0, GLfloat v1);
-void (APIENTRY * qglUniform3fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
-void (APIENTRY * qglUniform4fARB) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
-void (APIENTRY * qglUniform1iARB) (GLint location, GLint v0);
-void (APIENTRY * qglUniform2iARB) (GLint location, GLint v0, GLint v1);
-void (APIENTRY * qglUniform3iARB) (GLint location, GLint v0, GLint v1, GLint v2);
-void (APIENTRY * qglUniform4iARB) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
-void (APIENTRY * qglUniform1fvARB) (GLint location, GLsizei count, const GLfloat * value);
-void (APIENTRY * qglUniform2fvARB) (GLint location, GLsizei count, const GLfloat * value);
-void (APIENTRY * qglUniform3fvARB) (GLint location, GLsizei count, const GLfloat * value);
-void (APIENTRY * qglUniform4fvARB) (GLint location, GLsizei count, const GLfloat * value);
-void (APIENTRY * qglUniform2ivARB) (GLint location, GLsizei count, const GLint * value);
-void (APIENTRY * qglUniform3ivARB) (GLint location, GLsizei count, const GLint * value);
-void (APIENTRY * qglUniform4ivARB) (GLint location, GLsizei count, const GLint * value);
-void (APIENTRY * qglUniformMatrix2fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
-void (APIENTRY * qglUniformMatrix3fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
-void (APIENTRY * qglUniformMatrix4fvARB) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value);
-void (APIENTRY * qglGetObjectParameterfvARB) (GLhandleARB obj, GLenum pname, GLfloat * params);
-void (APIENTRY * qglGetObjectParameterivARB) (GLhandleARB obj, GLenum pname, GLint * params);
-void (APIENTRY * qglGetInfoLogARB) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog);
-void (APIENTRY * qglGetAttachedObjectsARB) (GLhandleARB containerObj, GLsizei maxCount, GLsizei * count,
- GLhandleARB * obj);
-GLint(APIENTRY * qglGetUniformLocationARB) (GLhandleARB programObj, const GLcharARB * name);
-void (APIENTRY * qglGetActiveUniformARB) (GLhandleARB programObj, GLuint index, GLsizei maxIndex, GLsizei * length,
- GLint * size, GLenum * type, GLcharARB * name);
-void (APIENTRY * qglGetUniformfvARB) (GLhandleARB programObj, GLint location, GLfloat * params);
-void (APIENTRY * qglGetUniformivARB) (GLhandleARB programObj, GLint location, GLint * params);
-void (APIENTRY * qglGetShaderSourceARB) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source);
-
-// GL_ARB_texture_compression
-void (APIENTRY * qglCompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
- GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
-void (APIENTRY * qglCompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height,
- GLint border, GLsizei imageSize, const GLvoid *data);
-void (APIENTRY * qglCompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border,
- GLsizei imageSize, const GLvoid *data);
-void (APIENTRY * qglCompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset,
- GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
-void (APIENTRY * qglCompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width,
- GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-void (APIENTRY * qglCompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format,
- GLsizei imageSize, const GLvoid *data);
-void (APIENTRY * qglGetCompressedTexImageARB)(GLenum target, GLint lod,
- GLvoid *img);
+// OpenGL 1.2, was GL_EXT_draw_range_elements
+void (APIENTRY * qglDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+
+// OpenGL 1.3, was GL_ARB_texture_compression
+void (APIENTRY * qglCompressedTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);
+void (APIENTRY * qglCompressedTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+
+// OpenGL 1.4, was GL_EXT_multi_draw_arrays
+void (APIENTRY * qglMultiDrawElements) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+
+// OpenGL 1.5, previously GL_ARB_vertex_buffer_object
+void (APIENTRY * qglGenQueries) (GLsizei n, GLuint *ids);
+void (APIENTRY * qglDeleteQueries) (GLsizei n, const GLuint *ids);
+void (APIENTRY * qglBeginQuery) (GLenum target, GLuint id);
+void (APIENTRY * qglEndQuery) (GLenum target);
+void (APIENTRY * qglGetQueryObjectiv) (GLuint id, GLenum pname, GLint *params);
+void (APIENTRY * qglGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint *params);
+void (APIENTRY * qglBindBuffer) (GLenum target, GLuint buffer);
+void (APIENTRY * qglDeleteBuffers) (GLsizei n, const GLuint *buffers);
+void (APIENTRY * qglGenBuffers) (GLsizei n, GLuint *buffers);
+void (APIENTRY * qglBufferData) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
+void (APIENTRY * qglBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);
+
+// OpenGL 2.0, previously GL_ARB_shading_language_100, GL_ARB_vertex_program, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+void (APIENTRY * qglAttachShader) (GLuint program, GLuint shader);
+void (APIENTRY * qglBindAttribLocation) (GLuint program, GLuint index, const GLchar *name);
+void (APIENTRY * qglCompileShader) (GLuint shader);
+GLuint(APIENTRY * qglCreateProgram) (void);
+GLuint(APIENTRY * qglCreateShader) (GLenum type);
+void (APIENTRY * qglDeleteProgram) (GLuint program);
+void (APIENTRY * qglDeleteShader) (GLuint shader);
+void (APIENTRY * qglDetachShader) (GLuint program, GLuint shader);
+void (APIENTRY * qglDisableVertexAttribArray) (GLuint index);
+void (APIENTRY * qglEnableVertexAttribArray) (GLuint index);
+void (APIENTRY * qglGetActiveUniform) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+void (APIENTRY * qglGetProgramiv) (GLuint program, GLenum pname, GLint *params);
+void (APIENTRY * qglGetProgramInfoLog) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+void (APIENTRY * qglGetShaderiv) (GLuint shader, GLenum pname, GLint *params);
+void (APIENTRY * qglGetShaderInfoLog) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+void (APIENTRY * qglGetShaderSource) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+GLint(APIENTRY * qglGetUniformLocation) (GLuint program, const GLchar *name);
+void (APIENTRY * qglLinkProgram) (GLuint program);
+void (APIENTRY * qglShaderSource) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+void (APIENTRY * qglUseProgram) (GLuint program);
+void (APIENTRY * qglUniform1f) (GLint location, GLfloat v0);
+void (APIENTRY * qglUniform2f) (GLint location, GLfloat v0, GLfloat v1);
+void (APIENTRY * qglUniform3f) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+void (APIENTRY * qglUniform4f) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+void (APIENTRY * qglUniform1i) (GLint location, GLint v0);
+void (APIENTRY * qglUniform1fv) (GLint location, GLsizei count, const GLfloat *value);
+void (APIENTRY * qglUniformMatrix4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+void (APIENTRY * qglValidateProgram) (GLuint program);
+void (APIENTRY * qglVertexAttribPointer) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
// GL_EXT_framebuffer_object
GLboolean (APIENTRY * qglIsRenderbufferEXT)(GLuint renderbuffer);
@@ -157,16 +115,6 @@ void (APIENTRY * qglGetFramebufferAttachmentParameterivEXT)(GLenum target, GLenu
void (APIENTRY * qglGenerateMipmapEXT)(GLenum target);
-// GL_ARB_occlusion_query
-void (APIENTRY * qglGenQueriesARB)(GLsizei n, GLuint *ids);
-void (APIENTRY * qglDeleteQueriesARB)(GLsizei n, const GLuint *ids);
-GLboolean (APIENTRY * qglIsQueryARB)(GLuint id);
-void (APIENTRY * qglBeginQueryARB)(GLenum target, GLuint id);
-void (APIENTRY * qglEndQueryARB)(GLenum target);
-void (APIENTRY * qglGetQueryivARB)(GLenum target, GLenum pname, GLint *params);
-void (APIENTRY * qglGetQueryObjectivARB)(GLuint id, GLenum pname, GLint *params);
-void (APIENTRY * qglGetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint *params);
-
// GL_EXT_framebuffer_blit
void (APIENTRY * qglBlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
@@ -240,248 +188,80 @@ void GLimp_InitExtraExtensions()
char *extension;
const char* result[3] = { "...ignoring %s\n", "...using %s\n", "...%s not found\n" };
- // GL_EXT_draw_range_elements
- extension = "GL_EXT_draw_range_elements";
- glRefConfig.drawRangeElements = qfalse;
- qglMultiDrawArraysEXT = NULL;
- qglMultiDrawElementsEXT = NULL;
- if( GLimp_HaveExtension( extension ) )
- {
- qglDrawRangeElementsEXT = (void *) SDL_GL_GetProcAddress("glDrawRangeElementsEXT");
-
- if ( r_ext_draw_range_elements->integer)
- glRefConfig.drawRangeElements = qtrue;
-
- ri.Printf(PRINT_ALL, result[glRefConfig.drawRangeElements], extension);
- }
- else
- {
- ri.Printf(PRINT_ALL, result[2], extension);
- }
-
- // GL_EXT_multi_draw_arrays
- extension = "GL_EXT_multi_draw_arrays";
- glRefConfig.multiDrawArrays = qfalse;
- qglMultiDrawArraysEXT = NULL;
- qglMultiDrawElementsEXT = NULL;
- if( GLimp_HaveExtension( extension ) )
- {
- qglMultiDrawArraysEXT = (PFNGLMULTIDRAWARRAYSEXTPROC) SDL_GL_GetProcAddress("glMultiDrawArraysEXT");
- qglMultiDrawElementsEXT = (PFNGLMULTIDRAWELEMENTSEXTPROC) SDL_GL_GetProcAddress("glMultiDrawElementsEXT");
-
- if ( r_ext_multi_draw_arrays->integer )
- glRefConfig.multiDrawArrays = qtrue;
-
- ri.Printf(PRINT_ALL, result[glRefConfig.multiDrawArrays], extension);
- }
- else
- {
- ri.Printf(PRINT_ALL, result[2], extension);
- }
-
- // GL_ARB_vertex_program
- //glRefConfig.vertexProgram = qfalse;
- extension = "GL_ARB_vertex_program";
- qglVertexAttrib4fARB = NULL;
- qglVertexAttrib4fvARB = NULL;
- qglVertexAttribPointerARB = NULL;
- qglEnableVertexAttribArrayARB = NULL;
- qglDisableVertexAttribArrayARB = NULL;
- if( GLimp_HaveExtension( extension ) )
- {
- qglVertexAttrib4fARB = (PFNGLVERTEXATTRIB4FARBPROC) SDL_GL_GetProcAddress("glVertexAttrib4fARB");
- qglVertexAttrib4fvARB = (PFNGLVERTEXATTRIB4FVARBPROC) SDL_GL_GetProcAddress("glVertexAttrib4fvARB");
- qglVertexAttribPointerARB = (PFNGLVERTEXATTRIBPOINTERARBPROC) SDL_GL_GetProcAddress("glVertexAttribPointerARB");
- qglEnableVertexAttribArrayARB =
- (PFNGLENABLEVERTEXATTRIBARRAYARBPROC) SDL_GL_GetProcAddress("glEnableVertexAttribArrayARB");
- qglDisableVertexAttribArrayARB =
- (PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) SDL_GL_GetProcAddress("glDisableVertexAttribArrayARB");
-
- ri.Printf(PRINT_ALL, result[1], extension);
- //glRefConfig.vertexProgram = qtrue;
- }
- else
- {
- ri.Error(ERR_FATAL, result[2], extension);
- }
-
- // GL_ARB_vertex_buffer_object
- //glRefConfig.vertexBufferObject = qfalse;
- extension = "GL_ARB_vertex_buffer_object";
- qglBindBufferARB = NULL;
- qglDeleteBuffersARB = NULL;
- qglGenBuffersARB = NULL;
- qglIsBufferARB = NULL;
- qglBufferDataARB = NULL;
- qglBufferSubDataARB = NULL;
- qglGetBufferSubDataARB = NULL;
- qglGetBufferParameterivARB = NULL;
- qglGetBufferPointervARB = NULL;
- if( GLimp_HaveExtension( extension ) )
- {
- qglBindBufferARB = (PFNGLBINDBUFFERARBPROC) SDL_GL_GetProcAddress("glBindBufferARB");
- qglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) SDL_GL_GetProcAddress("glDeleteBuffersARB");
- qglGenBuffersARB = (PFNGLGENBUFFERSARBPROC) SDL_GL_GetProcAddress("glGenBuffersARB");
- qglIsBufferARB = (PFNGLISBUFFERARBPROC) SDL_GL_GetProcAddress("glIsBufferARB");
- qglBufferDataARB = (PFNGLBUFFERDATAARBPROC) SDL_GL_GetProcAddress("glBufferDataARB");
- qglBufferSubDataARB = (PFNGLBUFFERSUBDATAARBPROC) SDL_GL_GetProcAddress("glBufferSubDataARB");
- qglGetBufferSubDataARB = (PFNGLGETBUFFERSUBDATAARBPROC) SDL_GL_GetProcAddress("glGetBufferSubDataARB");
- qglGetBufferParameterivARB = (PFNGLGETBUFFERPARAMETERIVARBPROC) SDL_GL_GetProcAddress("glGetBufferParameterivARB");
- qglGetBufferPointervARB = (PFNGLGETBUFFERPOINTERVARBPROC) SDL_GL_GetProcAddress("glGetBufferPointervARB");
- ri.Printf(PRINT_ALL, result[1], extension);
- //glRefConfig.vertexBufferObject = qtrue;
- }
- else
- {
- ri.Error(ERR_FATAL, result[2], extension);
- }
-
- // GL_ARB_shader_objects
- extension = "GL_ARB_shader_objects";
- //glRefConfig.shaderObjects = qfalse;
- qglDeleteObjectARB = NULL;
- qglGetHandleARB = NULL;
- qglDetachObjectARB = NULL;
- qglCreateShaderObjectARB = NULL;
- qglShaderSourceARB = NULL;
- qglCompileShaderARB = NULL;
- qglCreateProgramObjectARB = NULL;
- qglAttachObjectARB = NULL;
- qglLinkProgramARB = NULL;
- qglUseProgramObjectARB = NULL;
- qglValidateProgramARB = NULL;
- qglUniform1fARB = NULL;
- qglUniform2fARB = NULL;
- qglUniform3fARB = NULL;
- qglUniform4fARB = NULL;
- qglUniform1iARB = NULL;
- qglUniform2iARB = NULL;
- qglUniform3iARB = NULL;
- qglUniform4iARB = NULL;
- qglUniform1fvARB = NULL;
- qglUniform2fvARB = NULL;
- qglUniform3fvARB = NULL;
- qglUniform4fvARB = NULL;
- qglUniform2ivARB = NULL;
- qglUniform3ivARB = NULL;
- qglUniform4ivARB = NULL;
- qglUniformMatrix2fvARB = NULL;
- qglUniformMatrix3fvARB = NULL;
- qglUniformMatrix4fvARB = NULL;
- qglGetObjectParameterfvARB = NULL;
- qglGetObjectParameterivARB = NULL;
- qglGetInfoLogARB = NULL;
- qglGetAttachedObjectsARB = NULL;
- qglGetUniformLocationARB = NULL;
- qglGetActiveUniformARB = NULL;
- qglGetUniformfvARB = NULL;
- qglGetUniformivARB = NULL;
- qglGetShaderSourceARB = NULL;
- if( GLimp_HaveExtension( extension ) )
- {
- qglDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC) SDL_GL_GetProcAddress("glDeleteObjectARB");
- qglGetHandleARB = (PFNGLGETHANDLEARBPROC) SDL_GL_GetProcAddress("glGetHandleARB");
- qglDetachObjectARB = (PFNGLDETACHOBJECTARBPROC) SDL_GL_GetProcAddress("glDetachObjectARB");
- qglCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) SDL_GL_GetProcAddress("glCreateShaderObjectARB");
- qglShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) SDL_GL_GetProcAddress("glShaderSourceARB");
- qglCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) SDL_GL_GetProcAddress("glCompileShaderARB");
- qglCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) SDL_GL_GetProcAddress("glCreateProgramObjectARB");
- qglAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) SDL_GL_GetProcAddress("glAttachObjectARB");
- qglLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) SDL_GL_GetProcAddress("glLinkProgramARB");
- qglUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) SDL_GL_GetProcAddress("glUseProgramObjectARB");
- qglValidateProgramARB = (PFNGLVALIDATEPROGRAMARBPROC) SDL_GL_GetProcAddress("glValidateProgramARB");
- qglUniform1fARB = (PFNGLUNIFORM1FARBPROC) SDL_GL_GetProcAddress("glUniform1fARB");
- qglUniform2fARB = (PFNGLUNIFORM2FARBPROC) SDL_GL_GetProcAddress("glUniform2fARB");
- qglUniform3fARB = (PFNGLUNIFORM3FARBPROC) SDL_GL_GetProcAddress("glUniform3fARB");
- qglUniform4fARB = (PFNGLUNIFORM4FARBPROC) SDL_GL_GetProcAddress("glUniform4fARB");
- qglUniform1iARB = (PFNGLUNIFORM1IARBPROC) SDL_GL_GetProcAddress("glUniform1iARB");
- qglUniform2iARB = (PFNGLUNIFORM2IARBPROC) SDL_GL_GetProcAddress("glUniform2iARB");
- qglUniform3iARB = (PFNGLUNIFORM3IARBPROC) SDL_GL_GetProcAddress("glUniform3iARB");
- qglUniform4iARB = (PFNGLUNIFORM4IARBPROC) SDL_GL_GetProcAddress("glUniform4iARB");
- qglUniform1fvARB = (PFNGLUNIFORM1FVARBPROC) SDL_GL_GetProcAddress("glUniform1fvARB");
- qglUniform2fvARB = (PFNGLUNIFORM2FVARBPROC) SDL_GL_GetProcAddress("glUniform2fvARB");
- qglUniform3fvARB = (PFNGLUNIFORM3FVARBPROC) SDL_GL_GetProcAddress("glUniform3fvARB");
- qglUniform4fvARB = (PFNGLUNIFORM4FVARBPROC) SDL_GL_GetProcAddress("glUniform4fvARB");
- qglUniform2ivARB = (PFNGLUNIFORM2IVARBPROC) SDL_GL_GetProcAddress("glUniform2ivARB");
- qglUniform3ivARB = (PFNGLUNIFORM3IVARBPROC) SDL_GL_GetProcAddress("glUniform3ivARB");
- qglUniform4ivARB = (PFNGLUNIFORM4IVARBPROC) SDL_GL_GetProcAddress("glUniform4ivARB");
- qglUniformMatrix2fvARB = (PFNGLUNIFORMMATRIX2FVARBPROC) SDL_GL_GetProcAddress("glUniformMatrix2fvARB");
- qglUniformMatrix3fvARB = (PFNGLUNIFORMMATRIX3FVARBPROC) SDL_GL_GetProcAddress("glUniformMatrix3fvARB");
- qglUniformMatrix4fvARB = (PFNGLUNIFORMMATRIX4FVARBPROC) SDL_GL_GetProcAddress("glUniformMatrix4fvARB");
- qglGetObjectParameterfvARB = (PFNGLGETOBJECTPARAMETERFVARBPROC) SDL_GL_GetProcAddress("glGetObjectParameterfvARB");
- qglGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) SDL_GL_GetProcAddress("glGetObjectParameterivARB");
- qglGetInfoLogARB = (PFNGLGETINFOLOGARBPROC) SDL_GL_GetProcAddress("glGetInfoLogARB");
- qglGetAttachedObjectsARB = (PFNGLGETATTACHEDOBJECTSARBPROC) SDL_GL_GetProcAddress("glGetAttachedObjectsARB");
- qglGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) SDL_GL_GetProcAddress("glGetUniformLocationARB");
- qglGetActiveUniformARB = (PFNGLGETACTIVEUNIFORMARBPROC) SDL_GL_GetProcAddress("glGetActiveUniformARB");
- qglGetUniformfvARB = (PFNGLGETUNIFORMFVARBPROC) SDL_GL_GetProcAddress("glGetUniformfvARB");
- qglGetUniformivARB = (PFNGLGETUNIFORMIVARBPROC) SDL_GL_GetProcAddress("glGetUniformivARB");
- qglGetShaderSourceARB = (PFNGLGETSHADERSOURCEARBPROC) SDL_GL_GetProcAddress("glGetShaderSourceARB");
- ri.Printf(PRINT_ALL, result[1], extension);
- //glRefConfig.shaderObjects = qtrue;
- }
- else
- {
- ri.Error(ERR_FATAL, result[2], extension);
- }
-
- // GL_ARB_vertex_shader
- //glRefConfig.vertexShader = qfalse;
- extension = "GL_ARB_vertex_shader";
- qglBindAttribLocationARB = NULL;
- qglGetActiveAttribARB = NULL;
- qglGetAttribLocationARB = NULL;
- if( GLimp_HaveExtension( extension ) )
- {
- //int reservedComponents;
-
- //qglGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, &glConfig.maxVertexUniforms);
- //qglGetIntegerv(GL_MAX_VARYING_FLOATS_ARB, &glConfig.maxVaryingFloats);
- //qglGetIntegerv(GL_MAX_VERTEX_ATTRIBS_ARB, &glConfig.maxVertexAttribs);
-
- //reservedComponents = 16 * 10; // approximation how many uniforms we have besides the bone matrices
-
-#if 0
- if(glConfig.driverType == GLDRV_MESA)
- {
- // HACK
- // restrict to number of vertex uniforms to 512 because of:
- // xreal.x86_64: nv50_program.c:4181: nv50_program_validate_data: Assertion `p->param_nr <= 512' failed
-
- glConfig.maxVertexUniforms = Q_bound(0, glConfig.maxVertexUniforms, 512);
- }
-#endif
-
- //glConfig.maxVertexSkinningBones = (int) Q_bound(0.0, (Q_max(glConfig.maxVertexUniforms - reservedComponents, 0) / 16), MAX_BONES);
- //glConfig.vboVertexSkinningAvailable = r_vboVertexSkinning->integer && ((glConfig.maxVertexSkinningBones >= 12) ? qtrue : qfalse);
-
- qglBindAttribLocationARB = (PFNGLBINDATTRIBLOCATIONARBPROC) SDL_GL_GetProcAddress("glBindAttribLocationARB");
- qglGetActiveAttribARB = (PFNGLGETACTIVEATTRIBARBPROC) SDL_GL_GetProcAddress("glGetActiveAttribARB");
- qglGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC) SDL_GL_GetProcAddress("glGetAttribLocationARB");
- ri.Printf(PRINT_ALL, result[1], extension);
- //glRefConfig.vertexShader = qtrue;
- }
- else
- {
- ri.Error(ERR_FATAL, result[2], extension);
- }
-
- // GL_ARB_shading_language_100
- extension = "GL_ARB_shading_language_100";
- if( GLimp_HaveExtension( extension ) )
+ sscanf(glConfig.version_string, "%d.%d", &glRefConfig.openglMajorVersion, &glRefConfig.openglMinorVersion);
+ if (glRefConfig.openglMajorVersion < 2)
+ ri.Error(ERR_FATAL, "OpenGL 2.0 required!");
+ ri.Printf(PRINT_ALL, "...using OpenGL %s\n", glConfig.version_string);
+
+ // OpenGL 1.2, was GL_EXT_draw_range_elements
+ qglDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)SDL_GL_GetProcAddress("glDrawRangeElements");
+ glRefConfig.drawRangeElements = r_ext_draw_range_elements->integer ? qtrue : qfalse;
+ ri.Printf(PRINT_ALL, result[glRefConfig.drawRangeElements], "glDrawRangeElements()");
+
+ // OpenGL 1.3, was GL_ARB_texture_compression
+ qglCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC) SDL_GL_GetProcAddress("glCompressedTexImage2D");
+ qglCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) SDL_GL_GetProcAddress("qglCompressedTexSubImage2D");
+
+ // OpenGL 1.4, was GL_EXT_multi_draw_arrays
+ qglMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)SDL_GL_GetProcAddress("glMultiDrawElements");
+ glRefConfig.drawRangeElements = r_ext_multi_draw_arrays->integer ? qtrue : qfalse;
+ ri.Printf(PRINT_ALL, result[glRefConfig.drawRangeElements], "glMultiDrawElements()");
+
+ // OpenGL 1.5, was GL_ARB_vertex_buffer_object and GL_ARB_occlusion_query
+ qglGenQueries = (PFNGLGENQUERIESPROC) SDL_GL_GetProcAddress("glGenQueries");
+ qglDeleteQueries = (PFNGLDELETEQUERIESPROC) SDL_GL_GetProcAddress("glDeleteQueries");
+ qglBeginQuery = (PFNGLBEGINQUERYPROC) SDL_GL_GetProcAddress("glBeginQuery");
+ qglEndQuery = (PFNGLENDQUERYPROC) SDL_GL_GetProcAddress("glEndQuery");
+ qglGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC) SDL_GL_GetProcAddress("glGetQueryObjectiv");
+ qglGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC) SDL_GL_GetProcAddress("glGetQueryObjectuiv");
+ qglBindBuffer = (PFNGLBINDBUFFERPROC) SDL_GL_GetProcAddress("glBindBuffer");
+ qglDeleteBuffers = (PFNGLDELETEBUFFERSPROC) SDL_GL_GetProcAddress("glDeleteBuffers");
+ qglGenBuffers = (PFNGLGENBUFFERSPROC) SDL_GL_GetProcAddress("glGenBuffers");
+ qglBufferData = (PFNGLBUFFERDATAPROC) SDL_GL_GetProcAddress("glBufferData");
+ qglBufferSubData = (PFNGLBUFFERSUBDATAPROC) SDL_GL_GetProcAddress("glBufferSubData");
+ glRefConfig.occlusionQuery = qtrue;
+
+ // OpenGL 2.0, was GL_ARB_shading_language_100, GL_ARB_vertex_program, GL_ARB_shader_objects, and GL_ARB_vertex_shader
+ qglAttachShader = (PFNGLATTACHSHADERPROC) SDL_GL_GetProcAddress("glAttachShader");
+ qglBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC) SDL_GL_GetProcAddress("glBindAttribLocation");
+ qglCompileShader = (PFNGLCOMPILESHADERPROC) SDL_GL_GetProcAddress("glCompileShader");
+ qglCreateProgram = (PFNGLCREATEPROGRAMPROC) SDL_GL_GetProcAddress("glCreateProgram");
+ qglCreateShader = (PFNGLCREATESHADERPROC) SDL_GL_GetProcAddress("glCreateShader");
+ qglDeleteProgram = (PFNGLDELETEPROGRAMPROC) SDL_GL_GetProcAddress("glDeleteProgram");
+ qglDeleteShader = (PFNGLDELETESHADERPROC) SDL_GL_GetProcAddress("glDeleteShader");
+ qglDetachShader = (PFNGLDETACHSHADERPROC) SDL_GL_GetProcAddress("glDetachShader");
+ qglDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC) SDL_GL_GetProcAddress("glDisableVertexAttribArray");
+ qglEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) SDL_GL_GetProcAddress("glEnableVertexAttribArray");
+ qglGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC) SDL_GL_GetProcAddress("glGetActiveUniform");
+ qglGetProgramiv = (PFNGLGETPROGRAMIVPROC) SDL_GL_GetProcAddress("glGetProgramiv");
+ qglGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) SDL_GL_GetProcAddress("glGetProgramInfoLog");
+ qglGetShaderiv = (PFNGLGETSHADERIVPROC) SDL_GL_GetProcAddress("glGetShaderiv");
+ qglGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) SDL_GL_GetProcAddress("glGetShaderInfoLog");
+ qglGetShaderSource = (PFNGLGETSHADERSOURCEPROC) SDL_GL_GetProcAddress("glGetShaderSource");
+ qglGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) SDL_GL_GetProcAddress("glGetUniformLocation");
+ qglLinkProgram = (PFNGLLINKPROGRAMPROC) SDL_GL_GetProcAddress("glLinkProgram");
+ qglShaderSource = (PFNGLSHADERSOURCEPROC) SDL_GL_GetProcAddress("glShaderSource");
+ qglUseProgram = (PFNGLUSEPROGRAMPROC) SDL_GL_GetProcAddress("glUseProgram");
+ qglUniform1f = (PFNGLUNIFORM1FPROC) SDL_GL_GetProcAddress("glUniform1f");
+ qglUniform2f = (PFNGLUNIFORM2FPROC) SDL_GL_GetProcAddress("glUniform2f");
+ qglUniform3f = (PFNGLUNIFORM3FPROC) SDL_GL_GetProcAddress("glUniform3f");
+ qglUniform4f = (PFNGLUNIFORM4FPROC) SDL_GL_GetProcAddress("glUniform4f");
+ qglUniform1i = (PFNGLUNIFORM1IPROC) SDL_GL_GetProcAddress("glUniform1i");
+ qglUniform1fv = (PFNGLUNIFORM1FVPROC) SDL_GL_GetProcAddress("glUniform1fv");
+ qglUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC) SDL_GL_GetProcAddress("glUniformMatrix4fv");
+ qglValidateProgram = (PFNGLVALIDATEPROGRAMPROC) SDL_GL_GetProcAddress("glValidateProgram");
+ qglVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) SDL_GL_GetProcAddress("glVertexAttribPointer");
+
+ if (1)
{
char version[256];
- Q_strncpyz( version, (char *) qglGetString (GL_SHADING_LANGUAGE_VERSION_ARB), sizeof( version ) );
+ Q_strncpyz(version, (char *)qglGetString(GL_SHADING_LANGUAGE_VERSION), 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;
@@ -591,27 +371,6 @@ void GLimp_InitExtraExtensions()
ri.Printf(PRINT_ALL, result[2], extension);
}
- // GL_ARB_occlusion_query
- extension = "GL_ARB_occlusion_query";
- glRefConfig.occlusionQuery = qfalse;
- if (GLimp_HaveExtension(extension))
- {
- qglGenQueriesARB = (PFNGLGENQUERIESARBPROC) SDL_GL_GetProcAddress("glGenQueriesARB");
- qglDeleteQueriesARB = (PFNGLDELETEQUERIESARBPROC) SDL_GL_GetProcAddress("glDeleteQueriesARB");
- qglIsQueryARB = (PFNGLISQUERYARBPROC) SDL_GL_GetProcAddress("glIsQueryARB");
- qglBeginQueryARB = (PFNGLBEGINQUERYARBPROC) SDL_GL_GetProcAddress("glBeginQueryARB");
- qglEndQueryARB = (PFNGLENDQUERYARBPROC) SDL_GL_GetProcAddress("glEndQueryARB");
- qglGetQueryivARB = (PFNGLGETQUERYIVARBPROC) SDL_GL_GetProcAddress("glGetQueryivARB");
- qglGetQueryObjectivARB = (PFNGLGETQUERYOBJECTIVARBPROC) SDL_GL_GetProcAddress("glGetQueryObjectivARB");
- qglGetQueryObjectuivARB = (PFNGLGETQUERYOBJECTUIVARBPROC) SDL_GL_GetProcAddress("glGetQueryObjectuivARB");
- glRefConfig.occlusionQuery = qtrue;
- ri.Printf(PRINT_ALL, result[glRefConfig.occlusionQuery], extension);
- }
- else
- {
- ri.Printf(PRINT_ALL, result[2], extension);
- }
-
// GL_EXT_framebuffer_blit
extension = "GL_EXT_framebuffer_blit";
glRefConfig.framebufferBlit = qfalse;
@@ -626,22 +385,6 @@ void GLimp_InitExtraExtensions()
ri.Printf(PRINT_ALL, result[2], extension);
}
- // GL_ARB_texture_compression
- extension = "GL_ARB_texture_compression";
- glRefConfig.arbTextureCompression = qfalse;
- if (GLimp_HaveExtension(extension))
- {
- qglCompressedTexImage3DARB = (void *)SDL_GL_GetProcAddress("glCompressedTexImage3DARB");
- qglCompressedTexImage2DARB = (void *)SDL_GL_GetProcAddress("glCompressedTexImage2DARB");
- qglCompressedTexImage1DARB = (void *)SDL_GL_GetProcAddress("glCompressedTexImage1DARB");
- qglCompressedTexSubImage3DARB = (void *)SDL_GL_GetProcAddress("glCompressedTexSubImage3DARB");
- qglCompressedTexSubImage2DARB = (void *)SDL_GL_GetProcAddress("glCompressedTexSubImage2DARB");
- qglCompressedTexSubImage1DARB = (void *)SDL_GL_GetProcAddress("glCompressedTexSubImage1DARB");
- qglGetCompressedTexImageARB = (void *)SDL_GL_GetProcAddress("glGetCompressedTexImageARB");
- glRefConfig.arbTextureCompression = qtrue;
- ri.Printf(PRINT_ALL, result[glRefConfig.arbTextureCompression], extension);
- }
-
// GL_EXT_framebuffer_multisample
extension = "GL_EXT_framebuffer_multisample";
glRefConfig.framebufferMultisample = qfalse;
@@ -662,7 +405,7 @@ void GLimp_InitExtraExtensions()
extension = "GL_ARB_texture_compression_rgtc";
if (GLimp_HaveExtension(extension))
{
- if (r_ext_compressed_textures->integer && glRefConfig.arbTextureCompression)
+ if (r_ext_compressed_textures->integer)
glRefConfig.textureCompression |= TCR_RGTC;
ri.Printf(PRINT_ALL, result[r_ext_compressed_textures->integer ? 1 : 0], extension);
diff --git a/code/renderergl2/tr_glsl.c b/code/renderergl2/tr_glsl.c
index 8c40573..b908961 100644
--- a/code/renderergl2/tr_glsl.c
+++ b/code/renderergl2/tr_glsl.c
@@ -149,7 +149,7 @@ static uniformInfo_t uniformsInfo[] =
};
-static void GLSL_PrintInfoLog(GLhandleARB object, qboolean developerOnly)
+static void GLSL_PrintInfoLog(GLuint program, qboolean developerOnly)
{
char *msg;
static char msgPart[1024];
@@ -157,7 +157,7 @@ static void GLSL_PrintInfoLog(GLhandleARB object, qboolean developerOnly)
int i;
int printLevel = developerOnly ? PRINT_DEVELOPER : PRINT_ALL;
- qglGetObjectParameterivARB(object, GL_OBJECT_INFO_LOG_LENGTH_ARB, &maxLength);
+ qglGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength);
if (maxLength <= 0)
{
@@ -169,7 +169,7 @@ static void GLSL_PrintInfoLog(GLhandleARB object, qboolean developerOnly)
if (maxLength < 1023)
{
- qglGetInfoLogARB(object, maxLength, &maxLength, msgPart);
+ qglGetProgramInfoLog(program, maxLength, &maxLength, msgPart);
msgPart[maxLength + 1] = '\0';
@@ -179,7 +179,7 @@ static void GLSL_PrintInfoLog(GLhandleARB object, qboolean developerOnly)
{
msg = ri.Malloc(maxLength);
- qglGetInfoLogARB(object, maxLength, &maxLength, msg);
+ qglGetProgramInfoLog(program, maxLength, &maxLength, msg);
for(i = 0; i < maxLength; i += 1024)
{
@@ -192,18 +192,18 @@ static void GLSL_PrintInfoLog(GLhandleARB object, qboolean developerOnly)
}
}
-static void GLSL_PrintShaderSource(GLhandleARB object)
+static void GLSL_PrintShaderSource(GLuint shader)
{
char *msg;
static char msgPart[1024];
int maxLength = 0;
int i;
- qglGetObjectParameterivARB(object, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB, &maxLength);
+ qglGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &maxLength);
msg = ri.Malloc(maxLength);
- qglGetShaderSourceARB(object, maxLength, &maxLength, msg);
+ qglShaderSource(shader, 1, (const GLchar **)&msg, &maxLength);
for(i = 0; i < maxLength; i += 1024)
{
@@ -214,7 +214,7 @@ static void GLSL_PrintShaderSource(GLhandleARB object)
ri.Free(msg);
}
-static void GLSL_GetShaderHeader( GLenum shaderType, const GLcharARB *extra, char *dest, int size )
+static void GLSL_GetShaderHeader( GLenum shaderType, const GLchar *extra, char *dest, int size )
{
float fbufWidthScale, fbufHeightScale;
@@ -225,7 +225,7 @@ static void GLSL_GetShaderHeader( GLenum shaderType, const GLcharARB *extra, cha
{
Q_strcat(dest, size, "#version 130\n");
- if(shaderType == GL_VERTEX_SHADER_ARB)
+ if(shaderType == GL_VERTEX_SHADER)
{
Q_strcat(dest, size, "#define attribute in\n");
Q_strcat(dest, size, "#define varying out\n");
@@ -349,20 +349,20 @@ static void GLSL_GetShaderHeader( GLenum shaderType, const GLcharARB *extra, cha
Q_strcat(dest, size, "#line 0\n");
}
-static int GLSL_CompileGPUShader(GLhandleARB program, GLhandleARB *prevShader, const GLcharARB *buffer, int size, GLenum shaderType)
+static int GLSL_CompileGPUShader(GLuint program, GLuint *prevShader, const GLchar *buffer, int size, GLenum shaderType)
{
GLint compiled;
- GLhandleARB shader;
+ GLuint shader;
- shader = qglCreateShaderObjectARB(shaderType);
+ shader = qglCreateShader(shaderType);
- qglShaderSourceARB(shader, 1, (const GLcharARB **)&buffer, &size);
+ qglShaderSource(shader, 1, (const GLchar **)&buffer, &size);
// compile shader
- qglCompileShaderARB(shader);
+ qglCompileShader(shader);
// check if shader compiled
- qglGetObjectParameterivARB(shader, GL_OBJECT_COMPILE_STATUS_ARB, &compiled);
+ qglGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
if(!compiled)
{
GLSL_PrintShaderSource(shader);
@@ -376,12 +376,12 @@ static int GLSL_CompileGPUShader(GLhandleARB program, GLhandleARB *prevShader, c
if (*prevShader)
{
- qglDetachObjectARB(program, *prevShader);
- qglDeleteObjectARB(*prevShader);
+ qglDetachShader(program, *prevShader);
+ qglDeleteShader(*prevShader);
}
// attach shader to program
- qglAttachObjectARB(program, shader);
+ qglAttachShader(program, shader);
*prevShader = shader;
@@ -392,12 +392,12 @@ static int GLSL_LoadGPUShaderText(const char *name, const char *fallback,
GLenum shaderType, char *dest, int destSize)
{
char filename[MAX_QPATH];
- GLcharARB *buffer = NULL;
- const GLcharARB *shaderText = NULL;
+ GLchar *buffer = NULL;
+ const GLchar *shaderText = NULL;
int size;
int result;
- if(shaderType == GL_VERTEX_SHADER_ARB)
+ if(shaderType == GL_VERTEX_SHADER)
{
Com_sprintf(filename, sizeof(filename), "glsl/%s_vp.glsl", name);
}
@@ -451,13 +451,13 @@ static int GLSL_LoadGPUShaderText(const char *name, const char *fallback,
return result;
}
-static void GLSL_LinkProgram(GLhandleARB program)
+static void GLSL_LinkProgram(GLuint program)
{
GLint linked;
- qglLinkProgramARB(program);
+ qglLinkProgram(program);
- qglGetObjectParameterivARB(program, GL_OBJECT_LINK_STATUS_ARB, &linked);
+ qglGetProgramiv(program, GL_LINK_STATUS, &linked);
if(!linked)
{
GLSL_PrintInfoLog(program, qfalse);
@@ -466,13 +466,13 @@ static void GLSL_LinkProgram(GLhandleARB program)
}
}
-static void GLSL_ValidateProgram(GLhandleARB program)
+static void GLSL_ValidateProgram(GLuint program)
{
GLint validated;
- qglValidateProgramARB(program);
+ qglValidateProgram(program);
- qglGetObjectParameterivARB(program, GL_OBJECT_VALIDATE_STATUS_ARB, &validated);
+ qglGetProgramiv(program, GL_VALIDATE_STATUS, &validated);
if(!validated)
{
GLSL_PrintInfoLog(program, qfalse);
@@ -481,19 +481,19 @@ static void GLSL_ValidateProgram(GLhandleARB program)
}
}
-static void GLSL_ShowProgramUniforms(GLhandleARB program)
+static void GLSL_ShowProgramUniforms(GLuint program)
{
int i, count, size;
GLenum type;
char uniformName[1000];
// query the number of active uniforms
- qglGetObjectParameterivARB(program, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &count);
+ qglGetProgramiv(program, GL_ACTIVE_UNIFORMS, &count);
// Loop over each of the active uniforms, and set their value
for(i = 0; i < count; i++)
{
- qglGetActiveUniformARB(program, i, sizeof(uniformName), NULL, &size, &type, uniformName);
+ qglGetActiveUniform(program, i, sizeof(uniformName), NULL, &size, &type, uniformName);
ri.Printf(PRINT_DEVELOPER, "active uniform: '%s'\n", uniformName);
}
@@ -510,64 +510,64 @@ static int GLSL_InitGPUShader2(shaderProgram_t * program, const char *name, int
Q_strncpyz(program->name, name, sizeof(program->name));
- program->program = qglCreateProgramObjectARB();
+ program->program = qglCreateProgram();
program->attribs = attribs;
- if (!(GLSL_CompileGPUShader(program->program, &program->vertexShader, vpCode, strlen(vpCode), GL_VERTEX_SHADER_ARB)))
+ if (!(GLSL_CompileGPUShader(program->program, &program->vertexShader, vpCode, strlen(vpCode), GL_VERTEX_SHADER)))
{
- ri.Printf(PRINT_ALL, "GLSL_InitGPUShader2: Unable to load \"%s\" as GL_VERTEX_SHADER_ARB\n", name);
- qglDeleteObjectARB(program->program);
+ ri.Printf(PRINT_ALL, "GLSL_InitGPUShader2: Unable to load \"%s\" as GL_VERTEX_SHADER\n", name);
+ qglDeleteProgram(program->program);
return 0;
}
if(fpCode)
{
- if(!(GLSL_CompileGPUShader(program->program, &program->fragmentShader, fpCode, strlen(fpCode), GL_FRAGMENT_SHADER_ARB)))
+ if(!(GLSL_CompileGPUShader(program->program, &program->fragmentShader, fpCode, strlen(fpCode), GL_FRAGMENT_SHADER)))
{
- ri.Printf(PRINT_ALL, "GLSL_InitGPUShader2: Unable to load \"%s\" as GL_FRAGMENT_SHADER_ARB\n", name);
- qglDeleteObjectARB(program->program);
+ ri.Printf(PRINT_ALL, "GLSL_InitGPUShader2: Unable to load \"%s\" as GL_FRAGMENT_SHADER\n", name);
+ qglDeleteProgram(program->program);
return 0;
}
}
if(attribs & ATTR_POSITION)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_POSITION, "attr_Position");
+ qglBindAttribLocation(program->program, ATTR_INDEX_POSITION, "attr_Position");
if(attribs & ATTR_TEXCOORD)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_TEXCOORD, "attr_TexCoord0");
+ qglBindAttribLocation(program->program, ATTR_INDEX_TEXCOORD, "attr_TexCoord0");
if(attribs & ATTR_LIGHTCOORD)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_LIGHTCOORD, "attr_TexCoord1");
+ qglBindAttribLocation(program->program, ATTR_INDEX_LIGHTCOORD, "attr_TexCoord1");
// if(attribs & ATTR_TEXCOORD2)
-// qglBindAttribLocationARB(program->program, ATTR_INDEX_TEXCOORD2, "attr_TexCoord2");
+// qglBindAttribLocation(program->program, ATTR_INDEX_TEXCOORD2, "attr_TexCoord2");
// if(attribs & ATTR_TEXCOORD3)
-// qglBindAttribLocationARB(program->program, ATTR_INDEX_TEXCOORD3, "attr_TexCoord3");
+// qglBindAttribLocation(program->program, ATTR_INDEX_TEXCOORD3, "attr_TexCoord3");
if(attribs & ATTR_TANGENT)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_TANGENT, "attr_Tangent");
+ qglBindAttribLocation(program->program, ATTR_INDEX_TANGENT, "attr_Tangent");
if(attribs & ATTR_NORMAL)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_NORMAL, "attr_Normal");
+ qglBindAttribLocation(program->program, ATTR_INDEX_NORMAL, "attr_Normal");
if(attribs & ATTR_COLOR)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_COLOR, "attr_Color");
+ qglBindAttribLocation(program->program, ATTR_INDEX_COLOR, "attr_Color");
if(attribs & ATTR_PAINTCOLOR)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_PAINTCOLOR, "attr_PaintColor");
+ qglBindAttribLocation(program->program, ATTR_INDEX_PAINTCOLOR, "attr_PaintColor");
if(attribs & ATTR_LIGHTDIRECTION)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_LIGHTDIRECTION, "attr_LightDirection");
+ qglBindAttribLocation(program->program, ATTR_INDEX_LIGHTDIRECTION, "attr_LightDirection");
if(attribs & ATTR_POSITION2)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_POSITION2, "attr_Position2");
+ qglBindAttribLocation(program->program, ATTR_INDEX_POSITION2, "attr_Position2");
if(attribs & ATTR_NORMAL2)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_NORMAL2, "attr_Normal2");
+ qglBindAttribLocation(program->program, ATTR_INDEX_NORMAL2, "attr_Normal2");
if(attribs & ATTR_TANGENT2)
- qglBindAttribLocationARB(program->program, ATTR_INDEX_TANGENT2, "attr_Tangent2");
+ qglBindAttribLocation(program->program, ATTR_INDEX_TANGENT2, "attr_Tangent2");
GLSL_LinkProgram(program->program);
@@ -575,7 +575,7 @@ static int GLSL_InitGPUShader2(shaderProgram_t * program, const char *name, int
}
static int GLSL_InitGPUShader(shaderProgram_t * program, const char *name,
- int attribs, qboolean fragmentShader, const GLcharARB *extra, qboolean addHeader,
+ int attribs, qboolean fragmentShader, const GLchar *extra, qboolean addHeader,
const char *fallback_vp, const char *fallback_fp)
{
char vpCode[32000];
@@ -587,7 +587,7 @@ static int GLSL_InitGPUShader(shaderProgram_t * program, const char *name,
size = sizeof(vpCode);
if (addHeader)
{
- GLSL_GetShaderHeader(GL_VERTEX_SHADER_ARB, extra, vpCode, size);
+ GLSL_GetShaderHeader(GL_VERTEX_SHADER, extra, vpCode, size);
postHeader = &vpCode[strlen(vpCode)];
size -= strlen(vpCode);
}
@@ -596,7 +596,7 @@ static int GLSL_InitGPUShader(shaderProgram_t * program, const char *name,
postHeader = &vpCode[0];
}
- if (!GLSL_LoadGPUShaderText(name, fallback_vp, GL_VERTEX_SHADER_ARB, postHeader, size))
+ if (!GLSL_LoadGPUShaderText(name, fallback_vp, GL_VERTEX_SHADER, postHeader, size))
{
return 0;
}
@@ -606,7 +606,7 @@ static int GLSL_InitGPUShader(shaderProgram_t * program, const char *name,
size = sizeof(fpCode);
if (addHeader)
{
- GLSL_GetShaderHeader(GL_FRAGMENT_SHADER_ARB, extra, fpCode, size);
+ GLSL_GetShaderHeader(GL_FRAGMENT_SHADER, extra, fpCode, size);
postHeader = &fpCode[strlen(fpCode)];
size -= strlen(fpCode);
}
@@ -615,7 +615,7 @@ static int GLSL_InitGPUShader(shaderProgram_t * program, const char *name,
postHeader = &fpCode[0];
}
- if (!GLSL_LoadGPUShaderText(name, fallback_fp, GL_FRAGMENT_SHADER_ARB, postHeader, size))
+ if (!GLSL_LoadGPUShaderText(name, fallback_fp, GL_FRAGMENT_SHADER, postHeader, size))
{
return 0;
}
@@ -635,7 +635,7 @@ void GLSL_InitUniforms(shaderProgram_t *program)
size = 0;
for (i = 0; i < UNIFORM_COUNT; i++)
{
- uniforms[i] = qglGetUniformLocationARB(program->program, uniformsInfo[i].name);
+ uniforms[i] = qglGetUniformLocation(program->program, uniformsInfo[i].name);
if (uniforms[i] == -1)
continue;
@@ -855,17 +855,17 @@ void GLSL_DeleteGPUShader(shaderProgram_t *program)
{
if (program->vertexShader)
{
- qglDetachObjectARB(program->program, program->vertexShader);
- qglDeleteObjectARB(program->vertexShader);
+ qglDetachShader(program->program, program->vertexShader);
+ qglDeleteShader(program->vertexShader);
}
if (program->fragmentShader)
{
- qglDetachObjectARB(program->program, program->fragmentShader);
- qglDeleteObjectARB(program->fragmentShader);
+ qglDetachShader(program->program, program->fragmentShader);
+ qglDeleteShader(program->fragmentShader);
}
- qglDeleteObjectARB(program->program);
+ qglDeleteProgram(program->program);
if (program->uniformBuffer)
{
@@ -1360,7 +1360,7 @@ void GLSL_ShutdownGPUShaders(void)
ri.Printf(PRINT_ALL, "------- GLSL_ShutdownGPUShaders -------\n");
for (i = 0; i < ATTR_INDEX_COUNT; i++)
- qglDisableVertexAttribArrayARB(i);
+ qglDisableVertexAttribArray(i);
GL_BindNullProgram();
@@ -1406,7 +1406,7 @@ void GLSL_BindProgram(shaderProgram_t * program)
GLimp_LogComment(va("--- GLSL_BindProgram( %s ) ---\n", name));
}
- if (GL_UseProgramObject(programObject))
+ if (GL_UseProgram(programObject))
backEnd.pc.c_glslShaderBinds++;
}
diff --git a/code/renderergl2/tr_init.c b/code/renderergl2/tr_init.c
index 05cd40e..73c1c55 100644
--- a/code/renderergl2/tr_init.c
+++ b/code/renderergl2/tr_init.c
@@ -976,8 +976,8 @@ void GL_SetDefaultState( void )
if (glRefConfig.vertexArrayObject)
qglBindVertexArrayARB(0);
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+ qglBindBuffer(GL_ARRAY_BUFFER, 0);
+ qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glState.currentVao = NULL;
glState.vertexAttribsEnabled = 0;
@@ -1380,7 +1380,7 @@ void R_InitQueries(void)
return;
if (r_drawSunRays->integer)
- qglGenQueriesARB(ARRAY_LEN(tr.sunFlareQuery), tr.sunFlareQuery);
+ qglGenQueries(ARRAY_LEN(tr.sunFlareQuery), tr.sunFlareQuery);
}
void R_ShutDownQueries(void)
@@ -1389,7 +1389,7 @@ void R_ShutDownQueries(void)
return;
if (r_drawSunRays->integer)
- qglDeleteQueriesARB(ARRAY_LEN(tr.sunFlareQuery), tr.sunFlareQuery);
+ qglDeleteQueries(ARRAY_LEN(tr.sunFlareQuery), tr.sunFlareQuery);
}
/*
diff --git a/code/renderergl2/tr_local.h b/code/renderergl2/tr_local.h
index b50692e..202e1af 100644
--- a/code/renderergl2/tr_local.h
+++ b/code/renderergl2/tr_local.h
@@ -706,9 +706,9 @@ typedef struct shaderProgram_s
{
char name[MAX_QPATH];
- GLhandleARB program;
- GLhandleARB vertexShader;
- GLhandleARB fragmentShader;
+ GLuint program;
+ GLuint vertexShader;
+ GLuint fragmentShader;
uint32_t attribs; // vertex array attributes
// uniform parameters
@@ -1383,6 +1383,9 @@ typedef enum {
// We can't change glConfig_t without breaking DLL/vms compatibility, so
// store extensions we have here.
typedef struct {
+ int openglMajorVersion;
+ int openglMinorVersion;
+
qboolean drawRangeElements;
qboolean multiDrawArrays;
qboolean occlusionQuery;
@@ -1400,7 +1403,6 @@ typedef struct {
qboolean textureFloat;
qboolean halfFloatPixel;
qboolean packedDepthStencil;
- qboolean arbTextureCompression;
textureCompressionRef_t textureCompression;
qboolean swizzleNormalmap;
diff --git a/code/renderergl2/tr_postprocess.c b/code/renderergl2/tr_postprocess.c
index c4e5155..ade9ebf 100644
--- a/code/renderergl2/tr_postprocess.c
+++ b/code/renderergl2/tr_postprocess.c
@@ -282,7 +282,7 @@ static qboolean RB_UpdateSunFlareVis(void)
for (iter=0 ; ; ++iter)
{
GLint available = 0;
- qglGetQueryObjectivARB(tr.sunFlareQuery[tr.sunFlareQueryIndex], GL_QUERY_RESULT_AVAILABLE_ARB, &available);
+ qglGetQueryObjectiv(tr.sunFlareQuery[tr.sunFlareQueryIndex], GL_QUERY_RESULT_AVAILABLE, &available);
if (available)
break;
}
@@ -290,7 +290,7 @@ static qboolean RB_UpdateSunFlareVis(void)
ri.Printf(PRINT_DEVELOPER, "Waited %d iterations\n", iter);
}
- qglGetQueryObjectuivARB(tr.sunFlareQuery[tr.sunFlareQueryIndex], GL_QUERY_RESULT_ARB, &sampleCount);
+ qglGetQueryObjectuiv(tr.sunFlareQuery[tr.sunFlareQueryIndex], GL_QUERY_RESULT, &sampleCount);
return sampleCount > 0;
}
diff --git a/code/renderergl2/tr_shade.c b/code/renderergl2/tr_shade.c
index eb8688e..356f213 100644
--- a/code/renderergl2/tr_shade.c
+++ b/code/renderergl2/tr_shade.c
@@ -44,7 +44,7 @@ R_DrawElements
void R_DrawElementsVao( int numIndexes, glIndex_t firstIndex, glIndex_t minIndex, glIndex_t maxIndex )
{
if (glRefConfig.drawRangeElements)
- qglDrawRangeElementsEXT(GL_TRIANGLES, minIndex, maxIndex, numIndexes, GL_INDEX_TYPE, BUFFER_OFFSET(firstIndex * sizeof(glIndex_t)));
+ qglDrawRangeElements(GL_TRIANGLES, minIndex, maxIndex, numIndexes, GL_INDEX_TYPE, BUFFER_OFFSET(firstIndex * sizeof(glIndex_t)));
else
qglDrawElements(GL_TRIANGLES, numIndexes, GL_INDEX_TYPE, BUFFER_OFFSET(firstIndex * sizeof(glIndex_t)));
@@ -56,7 +56,7 @@ static void R_DrawMultiElementsVao( int multiDrawPrimitives, glIndex_t *multiDra
{
if (glRefConfig.multiDrawArrays && multiDrawPrimitives > 1)
{
- qglMultiDrawElementsEXT(GL_TRIANGLES, multiDrawNumIndexes, GL_INDEX_TYPE, (const GLvoid **)multiDrawFirstIndex, multiDrawPrimitives);
+ qglMultiDrawElements(GL_TRIANGLES, multiDrawNumIndexes, GL_INDEX_TYPE, (const GLvoid **)multiDrawFirstIndex, multiDrawPrimitives);
}
else
{
@@ -66,7 +66,7 @@ static void R_DrawMultiElementsVao( int multiDrawPrimitives, glIndex_t *multiDra
{
for (i = 0; i < multiDrawPrimitives; i++)
{
- qglDrawRangeElementsEXT(GL_TRIANGLES, multiDrawMinIndex[i], multiDrawMaxIndex[i], multiDrawNumIndexes[i], GL_INDEX_TYPE, multiDrawFirstIndex[i]);
+ qglDrawRangeElements(GL_TRIANGLES, multiDrawMinIndex[i], multiDrawMaxIndex[i], multiDrawNumIndexes[i], GL_INDEX_TYPE, multiDrawFirstIndex[i]);
}
}
else
diff --git a/code/renderergl2/tr_surface.c b/code/renderergl2/tr_surface.c
index f43ea6f..edaf43d 100644
--- a/code/renderergl2/tr_surface.c
+++ b/code/renderergl2/tr_surface.c
@@ -1624,43 +1624,43 @@ void RB_SurfaceVaoMdvMesh(srfVaoMdvMesh_t * surface)
if (glRefConfig.vertexArrayObject)
{
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, surface->vao->vertexesVBO);
+ qglBindBuffer(GL_ARRAY_BUFFER, surface->vao->vertexesVBO);
}
frameOffset = refEnt->frame * surface->vao->frameSize;
attribIndex = ATTR_INDEX_POSITION;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
attribIndex = ATTR_INDEX_NORMAL;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
attribIndex = ATTR_INDEX_TANGENT;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
frameOffset = refEnt->oldframe * surface->vao->frameSize;
attribIndex = ATTR_INDEX_POSITION2;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
attribIndex = ATTR_INDEX_NORMAL2;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
attribIndex = ATTR_INDEX_TANGENT2;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset + frameOffset));
if (!glRefConfig.vertexArrayObject)
{
attribIndex = ATTR_INDEX_TEXCOORD;
vAtb = &surface->vao->attribs[attribIndex];
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset));
}
}
diff --git a/code/renderergl2/tr_vbo.c b/code/renderergl2/tr_vbo.c
index 8f9ba66..61ede4e 100644
--- a/code/renderergl2/tr_vbo.c
+++ b/code/renderergl2/tr_vbo.c
@@ -196,9 +196,9 @@ void Vao_SetVertexPointers(vao_t *vao)
if (vAtb->enabled)
{
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset));
if (glRefConfig.vertexArrayObject || !(glState.vertexAttribsEnabled & attribBit))
- qglEnableVertexAttribArrayARB(attribIndex);
+ qglEnableVertexAttribArray(attribIndex);
if (!glRefConfig.vertexArrayObject || vao == tess.vao)
glState.vertexAttribsEnabled |= attribBit;
@@ -208,7 +208,7 @@ void Vao_SetVertexPointers(vao_t *vao)
// don't disable vertex attribs when using vertex array objects
// Vao_SetVertexPointers is only called during init when using VAOs, and vertex attribs start disabled anyway
if (!glRefConfig.vertexArrayObject && (glState.vertexAttribsEnabled & attribBit))
- qglDisableVertexAttribArrayARB(attribIndex);
+ qglDisableVertexAttribArray(attribIndex);
if (!glRefConfig.vertexArrayObject || vao == tess.vao)
glState.vertexAttribsEnabled &= ~attribBit;
@@ -229,11 +229,11 @@ vao_t *R_CreateVao(const char *name, byte *vertexes, int vertexesSize, byte *ind
switch (usage)
{
case VAO_USAGE_STATIC:
- glUsage = GL_STATIC_DRAW_ARB;
+ glUsage = GL_STATIC_DRAW;
break;
case VAO_USAGE_DYNAMIC:
- glUsage = GL_DYNAMIC_DRAW_ARB;
+ glUsage = GL_DYNAMIC_DRAW;
break;
default:
@@ -269,18 +269,18 @@ vao_t *R_CreateVao(const char *name, byte *vertexes, int vertexesSize, byte *ind
vao->vertexesSize = vertexesSize;
- qglGenBuffersARB(1, &vao->vertexesVBO);
+ qglGenBuffers(1, &vao->vertexesVBO);
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vao->vertexesVBO);
- qglBufferDataARB(GL_ARRAY_BUFFER_ARB, vertexesSize, vertexes, glUsage);
+ qglBindBuffer(GL_ARRAY_BUFFER, vao->vertexesVBO);
+ qglBufferData(GL_ARRAY_BUFFER, vertexesSize, vertexes, glUsage);
vao->indexesSize = indexesSize;
- qglGenBuffersARB(1, &vao->indexesIBO);
+ qglGenBuffers(1, &vao->indexesIBO);
- qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, vao->indexesIBO);
- qglBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, indexesSize, indexes, glUsage);
+ qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vao->indexesIBO);
+ qglBufferData(GL_ELEMENT_ARRAY_BUFFER, indexesSize, indexes, glUsage);
glState.currentVao = vao;
@@ -304,7 +304,7 @@ vao_t *R_CreateVao2(const char *name, int numVertexes, srfVert_t *verts, int num
int dataSize;
int dataOfs;
- int glUsage = GL_STATIC_DRAW_ARB;
+ int glUsage = GL_STATIC_DRAW;
if(!numVertexes || !numIndexes)
return NULL;
@@ -422,19 +422,19 @@ vao_t *R_CreateVao2(const char *name, int numVertexes, srfVert_t *verts, int num
vao->vertexesSize = dataSize;
- qglGenBuffersARB(1, &vao->vertexesVBO);
+ qglGenBuffers(1, &vao->vertexesVBO);
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vao->vertexesVBO);
- qglBufferDataARB(GL_ARRAY_BUFFER_ARB, vao->vertexesSize, data, glUsage);
+ qglBindBuffer(GL_ARRAY_BUFFER, vao->vertexesVBO);
+ qglBufferData(GL_ARRAY_BUFFER, vao->vertexesSize, data, glUsage);
// create IBO
vao->indexesSize = numIndexes * sizeof(glIndex_t);
- qglGenBuffersARB(1, &vao->indexesIBO);
+ qglGenBuffers(1, &vao->indexesIBO);
- qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, vao->indexesIBO);
- qglBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, vao->indexesSize, indexes, glUsage);
+ qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vao->indexesIBO);
+ qglBufferData(GL_ELEMENT_ARRAY_BUFFER, vao->indexesSize, indexes, glUsage);
Vao_SetVertexPointers(vao);
@@ -484,16 +484,16 @@ void R_BindVao(vao_t * vao)
// why you no save GL_ELEMENT_ARRAY_BUFFER binding, Intel?
if (1)
- qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, vao->indexesIBO);
+ qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vao->indexesIBO);
// tess VAO always has buffers bound
if (vao == tess.vao)
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vao->vertexesVBO);
+ qglBindBuffer(GL_ARRAY_BUFFER, vao->vertexesVBO);
}
else
{
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vao->vertexesVBO);
- qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, vao->indexesIBO);
+ qglBindBuffer(GL_ARRAY_BUFFER, vao->vertexesVBO);
+ qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vao->indexesIBO);
// tess VAO doesn't have vertex pointers set until data is uploaded
if (vao != tess.vao)
@@ -518,12 +518,12 @@ void R_BindNullVao(void)
qglBindVertexArrayARB(0);
// why you no save GL_ELEMENT_ARRAY_BUFFER binding, Intel?
- if (1) qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+ if (1) qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
else
{
- qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+ qglBindBuffer(GL_ARRAY_BUFFER, 0);
+ qglBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
glState.currentVao = NULL;
}
@@ -658,12 +658,12 @@ void R_ShutdownVaos(void)
if(vao->vertexesVBO)
{
- qglDeleteBuffersARB(1, &vao->vertexesVBO);
+ qglDeleteBuffers(1, &vao->vertexesVBO);
}
if(vao->indexesIBO)
{
- qglDeleteBuffersARB(1, &vao->indexesIBO);
+ qglDeleteBuffers(1, &vao->indexesIBO);
}
}
@@ -737,7 +737,7 @@ void RB_UpdateTessVao(unsigned int attribBits)
R_BindVao(tess.vao);
// orphan old vertex buffer so we don't stall on it
- qglBufferDataARB(GL_ARRAY_BUFFER_ARB, tess.vao->vertexesSize, NULL, GL_DYNAMIC_DRAW_ARB);
+ qglBufferData(GL_ARRAY_BUFFER, tess.vao->vertexesSize, NULL, GL_DYNAMIC_DRAW);
// if nothing to set, set everything
if(!(attribBits & ATTR_BITS))
@@ -761,17 +761,17 @@ void RB_UpdateTessVao(unsigned int attribBits)
if (attribUpload & attribBit)
{
// note: tess has a VBO where stride == size
- qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vAtb->offset, tess.numVertexes * vAtb->stride, tess.attribPointers[attribIndex]);
+ qglBufferSubData(GL_ARRAY_BUFFER, vAtb->offset, tess.numVertexes * vAtb->stride, tess.attribPointers[attribIndex]);
}
if (attribBits & attribBit)
{
if (!glRefConfig.vertexArrayObject)
- qglVertexAttribPointerARB(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset));
+ qglVertexAttribPointer(attribIndex, vAtb->count, vAtb->type, vAtb->normalized, vAtb->stride, BUFFER_OFFSET(vAtb->offset));
if (!(glState.vertexAttribsEnabled & attribBit))
{
- qglEnableVertexAttribArrayARB(attribIndex);
+ qglEnableVertexAttribArray(attribIndex);
glState.vertexAttribsEnabled |= attribBit;
}
}
@@ -779,15 +779,15 @@ void RB_UpdateTessVao(unsigned int attribBits)
{
if ((glState.vertexAttribsEnabled & attribBit))
{
- qglDisableVertexAttribArrayARB(attribIndex);
+ qglDisableVertexAttribArray(attribIndex);
glState.vertexAttribsEnabled &= ~attribBit;
}
}
}
// orphan old index buffer so we don't stall on it
- qglBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, tess.vao->indexesSize, NULL, GL_DYNAMIC_DRAW_ARB);
+ qglBufferData(GL_ELEMENT_ARRAY_BUFFER, tess.vao->indexesSize, NULL, GL_DYNAMIC_DRAW);
- qglBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, tess.numIndexes * sizeof(tess.indexes[0]), tess.indexes);
+ qglBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, tess.numIndexes * sizeof(tess.indexes[0]), tess.indexes);
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/ioquake3.git
More information about the Pkg-games-commits
mailing list