I have the following code, but nothing appears when I run the program, just a blank screen.
PFNGLGENPROGRAMSARBPROC glGenProgramsARB = NULL;
PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB = NULL;
PFNGLBINDPROGRAMARBPROC glBindProgramARB = NULL;
PFNGLPROGRAMSTRINGARBPROC glProgramStringARB = NULL;
PFNGLPROGRAMENVPARAMETER4FARBPROC glProgramEnvParameter4fARB = NULL;
glGenProgramsARB = (PFNGLGENPROGRAMSARBPROC)wglGetProcAddress("glGenProgramsARB");
glDeleteProgramsARB = (PFNGLDELETEPROGRAMSARBPROC)wglGetProcAddress("glDeleteProgramsARB");
glProgramStringARB = (PFNGLPROGRAMSTRINGARBPROC)wglGetProcAddress("glProgramStringARB");
glBindProgramARB = (PFNGLBINDPROGRAMARBPROC)wglGetProcAddress("glBindProgramARB");
glProgramEnvParameter4fARB = (PFNGLPROGRAMENVPARAMETER4FARBPROC)wglGetProcAddress("glProgramEnvParameter4fARB");
unsigned char *MyString = GetFile(“sample.psh”);
if(!MyString)
exit(1);
glGenProgramsARB(1, &progID);
glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, progID);
glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, strlen((char*)MyString), MyString);
glEnable(GL_FRAGMENT_PROGRAM_ARB);
void Draw (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity (); // Reset The Modelview Matrix
glTranslatef(-0.5,-0.5,-4);
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex3f(0,0,0);
glColor3f(0,1,0);
glVertex3f(0,1,0);
glColor3f(0,0,1);
glVertex3f(1,1,0);
glColor3f(1,1,1);
glVertex3f(1,0,0);
glEnd();
glFlush (); // Flush The GL Rendering Pipeline
}
####sample.psh#####
!!ARBfp1.0
MOV result.color, fragment.color;
END
Shouldn’t this work? All I’m doing in the fragment program is transfering the color from the incoming fragment to the result. I’m running this on a Radeon 9000 Mobility, and I know that ATI_fragment_shader is supported, so why isn’t this working?