Use the correct names for core shader functions in GL 2.0 implementations
This was SVN commit r6985.
This commit is contained in:
parent
cb240e474d
commit
e33f3f5e64
@ -32,8 +32,11 @@
|
||||
|
||||
FUNC is used for functions that are only extensions.
|
||||
FUNC2 is used for functions that have been promoted to core features.
|
||||
FUNC3 is used for functions that have been promoted to core features
|
||||
but have slightly changed semantics and need to be referred to by their
|
||||
core name instead of extension name.
|
||||
|
||||
The FUNC2 call includes the version of OpenGL in which the extension was promoted,
|
||||
The FUNC2/FUNC3 calls include the version of OpenGL in which the extension was promoted,
|
||||
and the pre- and post-promotion names (e.g. "glBindBufferARB" vs "glBindBuffer").
|
||||
|
||||
If the GL driver is advertising a sufficiently high version, we load the promoted
|
||||
@ -103,12 +106,12 @@ FUNC(void, glGenerateMipmapEXT, (GLenum target))
|
||||
|
||||
// GL_ARB_shader_objects
|
||||
FUNC2(void, glDeleteObjectARB, glDeleteObject, "2.0", (GLhandleARB obj))
|
||||
FUNC2(GLhandleARB, glGetHandleARB, glGetHandle, "2.0", (GLenum pname))
|
||||
// FUNC2(GLhandleARB, glGetHandleARB, glGetHandle, "2.0", (GLenum pname)) // NOTE: invalid because glGetHandle doesn't exist
|
||||
FUNC2(void, glDetachObjectARB, glDetachObject, "2.0", (GLhandleARB containerObj, GLhandleARB attachedObj))
|
||||
FUNC2(GLhandleARB, glCreateShaderObjectARB, glCreateShaderObject, "2.0", (GLenum shaderType))
|
||||
FUNC2(void, glShaderSourceARB, glShaderSource, "2.0", (GLhandleARB shaderObj, GLsizei count, const char **string, const GLint *length))
|
||||
FUNC2(void, glCompileShaderARB, glCompileShader, "2.0", (GLhandleARB shaderObj))
|
||||
FUNC2(GLhandleARB, glCreateProgramObjectARB, glCreateProgramObject, "2.0", (void))
|
||||
FUNC2(GLhandleARB, glCreateProgramObjectARB, glCreateProgram, "2.0", (void)) // NOTE: not glCreateProgramObject
|
||||
FUNC2(void, glAttachObjectARB, glAttachObject, "2.0", (GLhandleARB containerObj, GLhandleARB obj))
|
||||
FUNC2(void, glLinkProgramARB, glLinkProgram, "2.0", (GLhandleARB programObj))
|
||||
FUNC2(void, glUseProgramObjectARB, glUseProgramObject, "2.0", (GLhandleARB programObj))
|
||||
@ -132,9 +135,12 @@ FUNC2(void, glUniform4ivARB, glUniform4iv, "2.0", (GLint location, GLsizei count
|
||||
FUNC2(void, glUniformMatrix2fvARB, glUniformMatrix2fv, "2.0", (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
|
||||
FUNC2(void, glUniformMatrix3fvARB, glUniformMatrix3fv, "2.0", (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
|
||||
FUNC2(void, glUniformMatrix4fvARB, glUniformMatrix4fv, "2.0", (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
|
||||
FUNC2(void, glGetObjectParameterfvARB, glGetObjectParameterfv, "2.0", (GLhandleARB obj, GLenum pname, GLfloat *params))
|
||||
FUNC2(void, glGetObjectParameterivARB, glGetObjectParameteriv, "2.0", (GLhandleARB obj, GLenum pname, GLint *params))
|
||||
FUNC2(void, glGetInfoLogARB, glGetInfoLog, "2.0", (GLhandleARB obj, GLsizei maxLength, GLsizei *length, char *infoLog))
|
||||
FUNC3(void, glGetObjectParameterfvARB, glGetProgramfv, "2.0", (GLhandleARB obj, GLenum pname, GLfloat *params)) // NOTE: not glGetObjectParameterfv
|
||||
FUNC3(void, glGetObjectParameterfvARB, glGetShaderfv, "2.0", (GLhandleARB obj, GLenum pname, GLfloat *params)) // NOTE: not glGetObjectParameterfv
|
||||
FUNC3(void, glGetObjectParameterivARB, glGetProgramiv, "2.0", (GLhandleARB obj, GLenum pname, GLint *params)) // NOTE: not glGetObjectParameteriv
|
||||
FUNC3(void, glGetObjectParameterivARB, glGetShaderiv, "2.0", (GLhandleARB obj, GLenum pname, GLint *params)) // NOTE: not glGetObjectParameteriv
|
||||
FUNC3(void, glGetInfoLogARB, glGetProgramInfoLog, "2.0", (GLhandleARB obj, GLsizei maxLength, GLsizei *length, char *infoLog)) // NOTE: not glGetInfoLog
|
||||
FUNC3(void, glGetInfoLogARB, glGetShaderInfoLog, "2.0", (GLhandleARB obj, GLsizei maxLength, GLsizei *length, char *infoLog)) // NOTE: not glGetInfoLog
|
||||
FUNC2(void, glGetAttachedObjectsARB, glGetAttachedObjects, "2.0", (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj))
|
||||
FUNC2(GLint, glGetUniformLocationARB, glGetUniformLocation, "2.0", (GLhandleARB programObj, const char *name))
|
||||
FUNC2(void, glGetActiveUniformARB, glGetActiveUniform, "2.0", (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, char *name))
|
||||
|
@ -48,7 +48,9 @@ extern "C"
|
||||
{
|
||||
#define FUNC(ret, name, params) ret (GL_CALL_CONV *p##name) params;
|
||||
#define FUNC2(ret, nameARB, nameCore, version, params) ret (GL_CALL_CONV *p##nameARB) params;
|
||||
#define FUNC3(ret, nameARB, nameCore, version, params) ret (GL_CALL_CONV *p##nameCore) params;
|
||||
#include "glext_funcs.h"
|
||||
#undef FUNC3
|
||||
#undef FUNC2
|
||||
#undef FUNC
|
||||
}
|
||||
@ -240,14 +242,18 @@ static void importExtensionFunctions()
|
||||
// (TODO: this calls ogl_HaveVersion far more times than is necessary -
|
||||
// we should probably use the have_* variables instead)
|
||||
#define FUNC(ret, name, params) p##name = (ret (GL_CALL_CONV*) params)SDL_GL_GetProcAddress(#name);
|
||||
#define FUNC2(ret, nameARB, nameCore, version, params) \
|
||||
p##nameARB = NULL; \
|
||||
#define FUNC23(pname, ret, nameARB, nameCore, version, params) \
|
||||
pname = NULL; \
|
||||
if(ogl_HaveVersion(version)) \
|
||||
p##nameARB = (ret (GL_CALL_CONV*) params)SDL_GL_GetProcAddress(#nameCore); \
|
||||
if(!p##nameARB) /* use the ARB name if the driver lied about what version it supports */ \
|
||||
p##nameARB = (ret (GL_CALL_CONV*) params)SDL_GL_GetProcAddress(#nameARB);
|
||||
pname = (ret (GL_CALL_CONV*) params)SDL_GL_GetProcAddress(#nameCore); \
|
||||
if(!pname) /* use the ARB name if the driver lied about what version it supports */ \
|
||||
pname = (ret (GL_CALL_CONV*) params)SDL_GL_GetProcAddress(#nameARB);
|
||||
#define FUNC2(ret, nameARB, nameCore, version, params) FUNC23(p##nameARB, ret, nameARB, nameCore, version, params)
|
||||
#define FUNC3(ret, nameARB, nameCore, version, params) FUNC23(p##nameCore, ret, nameARB, nameCore, version, params)
|
||||
#include "glext_funcs.h"
|
||||
#undef FUNC3
|
||||
#undef FUNC2
|
||||
#undef FUNC23
|
||||
#undef FUNC
|
||||
}
|
||||
|
||||
|
@ -127,7 +127,9 @@ extern const char* ogl_ExtensionString(void);
|
||||
#endif
|
||||
#define FUNC(ret, name, params) EXTERN_C ret (GL_CALL_CONV *p##name) params;
|
||||
#define FUNC2(ret, nameARB, nameCore, version, params) EXTERN_C ret (GL_CALL_CONV *p##nameARB) params;
|
||||
#define FUNC3(ret, nameARB, nameCore, version, params) EXTERN_C ret (GL_CALL_CONV *p##nameCore) params;
|
||||
#include "glext_funcs.h"
|
||||
#undef FUNC3
|
||||
#undef FUNC2
|
||||
#undef FUNC
|
||||
// leave GL_CALL_CONV defined for ogl.cpp
|
||||
|
@ -142,14 +142,14 @@ static LibError Ogl_Shader_reload(Ogl_Shader* shdr, const VfsPath& pathname, Han
|
||||
|
||||
GLint log_length;
|
||||
GLint compile_success;
|
||||
pglGetObjectParameterivARB(shdr->id, GL_OBJECT_COMPILE_STATUS_ARB, &compile_success);
|
||||
pglGetObjectParameterivARB(shdr->id, GL_OBJECT_INFO_LOG_LENGTH_ARB, &log_length);
|
||||
pglGetShaderiv(shdr->id, GL_OBJECT_COMPILE_STATUS_ARB, &compile_success);
|
||||
pglGetShaderiv(shdr->id, GL_OBJECT_INFO_LOG_LENGTH_ARB, &log_length);
|
||||
if (log_length > 1)
|
||||
{
|
||||
char typenamebuf[32];
|
||||
char* infolog = new char[log_length];
|
||||
|
||||
pglGetInfoLogARB(shdr->id, log_length, 0, infolog);
|
||||
pglGetShaderInfoLog(shdr->id, log_length, 0, infolog);
|
||||
|
||||
debug_printf("Compile log for shader %hs (type %hs):\n%hs",
|
||||
pathname.string().c_str(),
|
||||
@ -384,12 +384,12 @@ static LibError Ogl_Program_reload(Ogl_Program* p, const VfsPath& pathname_, Han
|
||||
GLint log_length;
|
||||
GLint linked;
|
||||
|
||||
pglGetObjectParameterivARB(p->id, GL_OBJECT_LINK_STATUS_ARB, &linked);
|
||||
pglGetObjectParameterivARB(p->id, GL_OBJECT_INFO_LOG_LENGTH_ARB, &log_length);
|
||||
pglGetProgramiv(p->id, GL_OBJECT_LINK_STATUS_ARB, &linked);
|
||||
pglGetProgramiv(p->id, GL_OBJECT_INFO_LOG_LENGTH_ARB, &log_length);
|
||||
if (log_length > 1)
|
||||
{
|
||||
char* infolog = new char[log_length];
|
||||
pglGetInfoLogARB(p->id, log_length, 0, infolog);
|
||||
pglGetProgramInfoLog(p->id, log_length, 0, infolog);
|
||||
|
||||
debug_printf("Linker log for %hs:\n%hs\n", pathname, infolog);
|
||||
delete[] infolog;
|
||||
|
Loading…
Reference in New Issue
Block a user