Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use glGetHandleARB to get program object
Some systems don't define the GLHandleARB as unsigned integer and thus want to
get a complete pointer when calling glUseProgramObjectARB. This makes it
necessary to change the program variable to GLHandleARB and replace the
glGetIntegerv call to the old ARB glGetHandleARB to make sure that the returned
data can be of any type and not only integer.
  • Loading branch information
ecsv committed Mar 8, 2014
1 parent af3ce5a commit c6b3395
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/Glitch64/glitchmain.cpp
Expand Up @@ -110,6 +110,7 @@ PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
PFNGLGETHANDLEARBPROC glGetHandleARB;
PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
PFNGLUNIFORM1IARBPROC glUniform1iARB;
PFNGLUNIFORM4IARBPROC glUniform4iARB;
Expand Down Expand Up @@ -626,6 +627,7 @@ grSstWinOpen(
glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)wglGetProcAddress("glAttachObjectARB");
glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)wglGetProcAddress("glLinkProgramARB");
glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)wglGetProcAddress("glUseProgramObjectARB");
glGetHandleARB = (PFNGLGETHANDLEARBPROC)wglGetProcAddress("glGetHandleARB");
glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC)wglGetProcAddress("glGetUniformLocationARB");
glUniform1iARB = (PFNGLUNIFORM1IARBPROC)wglGetProcAddress("glUniform1iARB");
glUniform4iARB = (PFNGLUNIFORM4IARBPROC)wglGetProcAddress("glUniform4iARB");
Expand Down Expand Up @@ -1661,12 +1663,12 @@ grBufferClear( GrColor_t color, GrAlpha_t alpha, FxU32 depth )
FX_ENTRY void FX_CALL
grBufferSwap( FxU32 swap_interval )
{
GLuint program;
GLhandleARB program;

glFinish();
// printf("rendercallback is %p\n", renderCallback);
if(renderCallback) {
glGetIntegerv(GL_CURRENT_PROGRAM, (GLint*) &program);
program = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
glUseProgramObjectARB(0);
(*renderCallback)(1);
if (program)
Expand Down
2 changes: 2 additions & 0 deletions src/Glitch64/main.h
Expand Up @@ -102,6 +102,7 @@ extern "C" {
extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
extern PFNGLGETHANDLEARBPROC glGetHandleARB;
typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
}
#else
Expand Down Expand Up @@ -136,6 +137,7 @@ extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
extern PFNGLGETHANDLEARBPROC glGetHandleARB;
extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
Expand Down

0 comments on commit c6b3395

Please sign in to comment.