我已经开始使用OpenGL进行编程了,我正在编写一个Shader& amp;课程班。我已经看了很多其他库,并注意到其他一些库会缓存glGetShaderiv
返回的值。
是否真的需要缓存值?或者,只要我需要获得编译状态,就可以安全地调用glGetShaderiv(shaderID, GL_COMPILE_STATUS, &result);
。
glGetShaderiv
是否足够慢以至于需要缓存?
答案 0 :(得分:0)
不必要地调用glGet* (...)
通常是不可取的,但这很可能是您可以查询的最简单的事情。
GL_COMPILE_STATUS
是一个简单的布尔值,它或多或少是一个补充属性,因为glCompileShader (...)
不会返回任何内容。在查询其状态之前,驱动程序不会推迟编译,这仅仅是glCompileShader
在实际返回内容时返回的内容。
在致电glCompileShader (...)
之后,您多久发现自己在查询着色器的编译状态?实际上,除了在您尝试编译着色器之后,我不能在任何时候查看编译状态。编译着色器只是构建工作GLSL程序所需的更大机器中的一个小齿轮。事实上,一旦构建程序,实际上可以抛弃着色器对象。