diff --git a/progs/fp/tri-position.c b/progs/fp/tri-position.c index 18e8182..1c99082 100644 --- a/progs/fp/tri-position.c +++ b/progs/fp/tri-position.c @@ -15,7 +15,16 @@ static void Init( void ) "MUL result.color, fragment.position, {.005}.x; \n" "END" ; + static const char *modulate2Dvert = + "!!ARBvp1.0\n" + "DP4 result.position.x, vertex.position, state.matrix.mvp.row[0];\n" + "DP4 result.position.y, vertex.position, state.matrix.mvp.row[1];\n" + "DP4 result.position.z, vertex.position, state.matrix.mvp.row[2];\n" + "DP4 result.position.w, vertex.position, state.matrix.mvp.row[3];\n" + "END" + ; GLuint modulateProg; + GLuint modulateProgVert; if (!glutExtensionSupported("GL_ARB_fragment_program")) { printf("Error: GL_ARB_fragment_program not supported!\n"); @@ -35,6 +44,18 @@ static void Init( void ) glEnable(GL_FRAGMENT_PROGRAM_ARB); + /* Setup the vertex program */ + glGenProgramsARB(1, &modulateProgVert); + glBindProgramARB(GL_VERTEX_PROGRAM_ARB, modulateProgVert); + glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, + strlen(modulate2Dvert), (const GLubyte *)modulate2Dvert); + + printf("glGetError = 0x%x\n", (int) glGetError()); + printf("glError(GL_PROGRAM_ERROR_STRING_ARB) = %s\n", + (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB)); + + glEnable(GL_VERTEX_PROGRAM_ARB); + glClearColor(.3, .3, .3, 0); }