Name

glValidateProgram — 验证程序对象

C Specification

void glValidateProgram( GLuint program);
 

Parameters

program

指定要验证的程序对象的句柄

Description

glValidateProgram 检测program中包含的执行段在给定的当前OpenGL状态下是否可执行。验证过程产生的信息会被存储在program日志中。验证信息可能由一个空字符串组成,或者可能是一个包含当前程序对象如何与余下的OpenGL当前状态交互的信息的字符串。这为OpenGL实现提供了一个方法来调查更多关于程序效率低下、低优化、执行失败等的信息。

验证操作的结果状态值会被存储为程序对象状态的一部分。如果验证成功,这个值会被置为GL_TURE,反之置为GL_FALSE。调用函数 glGetProgramiv 传入参数 program和GL_VALIDATE_STATUS可以查询这个值。在给定当前状态下,如果验证成功,那么 program保证可以执行,反之保证不会执行。

这个函数一般用于程序开发阶段。日志中存储的信息字符串完全是依赖于GL实现的。所以,应用程序不应该期望不同的OpenGL实现会产生特征性的信息字符串。

Notes

这个函数模拟这样的验证操作:当渲染程序发布后,并且当可编程着色器是当前状态的一部分时,OpenGL实现必须进行的验证操作。

 当当前程序对象中的任何两个活动样品是不同类型但是指向相同纹理图像单元时,函数glDrawArraysglDrawElements会产生GL_INVALID_OPERATION错误。

当渲染程序发布后,程序很难捕获这些错误,即使能,也会大大降低效率。所以,我们建议程序在开发阶段调用glValidateProgram函数检测这些问题。

Errors

GL_INVALID_VALUE 错误:如果 program 不是由 OpenGL生成的值.

GL_INVALID_OPERATION 错误:如果 program 不是一个程序对象.

Associated Gets

glGetProgramiv 传入参数 program 和 GL_VALIDATE_STATUS

glGetProgramInfoLog 传入参数 program

glIsProgram

评论模块尚未加载