Is glGetShaderiv slow?

Is glGetShaderiv slow?

本文关键字:slow glGetShaderiv Is      更新时间:2023-10-16

我已经开始在OpenGL编程,我正在写一个着色器&;程序类。我已经看了很多其他的库,并注意到其他一些库缓存了glGetShaderiv返回的值。

真的需要缓存这些值吗?或者,当我需要获取编译状态时,调用glGetShaderiv(shaderID, GL_COMPILE_STATUS, &result);是否安全?

glGetShaderiv是否慢到需要缓存?

不必要地调用glGet* (...)通常是不可取的,但这很可能是您可以查询的最简单的事情。

GL_COMPILE_STATUS是一个简单的布尔值,它或多或少是一个补充属性,因为glCompileShader (...)不返回任何东西。这并不是说驱动程序要推迟编译,直到您查询它的状态,这只是glCompileShader 如果它实际返回了一些东西,那么它将返回的内容。

你是否经常在调用glCompileShader (...)之后查询shader的编译状态?实际上,除了在您尝试编译着色器之后立即查询编译状态之外,我看不到任何时候查询编译状态有多大用处。编译着色器只是构建一个工作的GLSL程序所需的更大机器中的一个小齿轮。事实上,一旦程序被构建,着色器对象实际上可以被丢弃。