691 |
} |
} |
692 |
|
|
693 |
|
|
694 |
void VPCode::compile() { |
void compileNVProg(GLuint TARGET, GLuint id, const string source) { |
|
vpid = shared_ptr<VPid>(new VPid); |
|
695 |
|
|
696 |
int er = glGetError(); |
int er = glGetError(); |
697 |
if (er != GL_NO_ERROR) |
if (er != GL_NO_ERROR) |
700 |
<< " before loading vertex program\n"; |
<< " before loading vertex program\n"; |
701 |
|
|
702 |
#ifdef GL_VERTEX_PROGRAM_NV |
#ifdef GL_VERTEX_PROGRAM_NV |
703 |
if (source.compare(0, 5, "!!VSP") == 0) { |
glLoadProgramNV(TARGET, id, source.length(), (GLubyte*)source.data()); |
|
glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, vpid->name, |
|
|
source.length(), (GLubyte*)source.data()); |
|
|
} else { |
|
|
glLoadProgramNV(GL_VERTEX_PROGRAM_NV, vpid->name, source.length(), |
|
|
(GLubyte*)source.data()); |
|
|
} |
|
704 |
|
|
705 |
er = glGetError(); |
er = glGetError(); |
706 |
if (er != GL_NO_ERROR) { |
if (er != GL_NO_ERROR) { |
708 |
|
|
709 |
cerr << "OPENGL ERROR " |
cerr << "OPENGL ERROR " |
710 |
<< gluErrorString(er) |
<< gluErrorString(er) |
711 |
<< " when loading vertex program\n"; |
<< " when loading " |
712 |
|
<< getTokenString(TARGET) |
713 |
|
<< " program\n"; |
714 |
|
|
715 |
glGetIntegerv(GL_PROGRAM_ERROR_POSITION_NV, &errpos); |
glGetIntegerv(GL_PROGRAM_ERROR_POSITION_NV, &errpos); |
716 |
std::cerr << "Program error position: " << errpos << "\n"; |
std::cerr << "Program error position: " << errpos << "\n"; |