Cg Vertexシェーダーがいくつかあり、コンパイルされたバイナリをそこからキャッシュに取得したいと考えています。
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);
変数がglGetProgramiv呼び出しで変更されるかどうかを確認するために、長さを-10で初期化しましたが、結果として常に-10を取得します。