我有一些Cg頂點着色器並希望從編譯好的二進制文件中緩存。從Cg頂點着色器獲取GlProgram二進制文件
我加載Cg頂點的方式是使用glProgramStringARB,問題在於我無法從glGetProgramiv和glGetProgramBinary中檢索任何值。
下面是我在做什麼一個示例代碼:
CGprogram program = cgCreateProgram(context, CG_SOURCE, source, ...);
const char* programARB = static_cast<char*>(cgGetProgramString(program,
CG_COMPILED_PROGRAM));
GLuint id;
glGenProgramsARB(1, id);
glBindProgramARB(GL_VERTEX_PROGRAM_ARB, id);
glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB,
static_cast<GLsizei>(strlen(programARB)), programARB);
GLint length = -10;
glGetProgramiv(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_BINARY_LENGTH, &lenght);
printf("LENGTH: %d\n", length);
我初始化長度-10只是爲了看看變量將與glGetProgramiv呼叫改變,但我總是得到-10的結果。