glValidateProgram应该只用于调试,用于release版本中会影响性能。以下是详细描述:
Before doing so, however, we might want to check whether the program validates. That is, there are certain aspects of execution that a successful link cannot guarantee. For example, perhaps the application never binds valid texture units to samplers. This behavior will not be known at link time, but instead will become apparent at draw time. To check that your program will execute with the current state, you can call glValidateProgram:
void glValidateProgram(GLuint program) program handle to the program object to validate |
The result of the validation can be checked using GL_VALIDATE_STATUS described earlier. The info log will also be updated.
Note: You really want to use glValidateProgram only for debugging purposes. It is a slow operation and certainly not something you want to check before every render. In fact, you can get away with never using it if your application is successfully rendering. We want to make you aware that this function does exist, though.