565 |
|
|
566 |
return r; |
return r; |
567 |
} |
} |
568 |
|
|
569 |
|
|
570 |
|
void VPCode::compile() { |
571 |
|
vpid = shared_ptr<VPid>(new VPid); |
572 |
|
|
573 |
|
int er = glGetError(); |
574 |
|
if (er != GL_NO_ERROR) |
575 |
|
cerr << "Warning: OPENGL ERROR " |
576 |
|
<< gluErrorString(er) |
577 |
|
<< " before loading vertex program\n"; |
578 |
|
|
579 |
|
#ifdef GL_VERTEX_PROGRAM_NV |
580 |
|
if (source.compare(0, 5, "!!VSP") == 0) { |
581 |
|
glLoadProgramNV(GL_VERTEX_STATE_PROGRAM_NV, vpid->name, |
582 |
|
source.length(), (GLubyte*)source.data()); |
583 |
|
} else { |
584 |
|
glLoadProgramNV(GL_VERTEX_PROGRAM_NV, vpid->name, source.length(), |
585 |
|
(GLubyte*)source.data()); |
586 |
|
} |
587 |
|
|
588 |
|
er = glGetError(); |
589 |
|
if (er != GL_NO_ERROR) { |
590 |
|
GLint errpos; |
591 |
|
|
592 |
|
cerr << "OPENGL ERROR " |
593 |
|
<< gluErrorString(er) |
594 |
|
<< " when loading vertex program\n"; |
595 |
|
|
596 |
|
glGetIntegerv(GL_PROGRAM_ERROR_POSITION_NV, &errpos); |
597 |
|
std::cerr << "Program error position: " << errpos << "\n"; |
598 |
|
} |
599 |
|
#endif |
600 |
|
} |
601 |
} |
} |