OpenGL 文档为glUseProgram https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glUseProgram.xhtml声称用参数调用它zero将导致着色器执行的结果为undefined
.
然而,经过一番搜索后,我看到了一些人们使用的例子glUseProgram
to 卸载当前的着色器程序。
这种行为可靠吗?如果不是,那么到底是什么glUseProgram(0)
do?
glUseProgram
意味着给定的程序对象是将用于使用程序的事物的当前程序(glUniform
、渲染命令等)。 0 很像NULL
对于 OpenGL 对象。它代表的不是一个对象(对于大多数对象而言)。所以,glUseProgram(0)
意思是no程序是最新的,因此不会将任何程序用于使用程序的事物。
如果您尝试致电glUniform
当当前没有程序时,函数将失败并出现错误。如果您尝试在当前没有程序时进行渲染,则会发生以下两种情况之一。在 OpenGL 3.1+ 核心配置文件中,您将得到未定义的行为,因为核心 OpenGLmust用程序渲染。在兼容性配置文件或 3.0 或更低版本中,您将获得固定功能渲染。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)