当我致电glUniform2fv
时会发生什么?
它是否同步复制传递的缓冲区,或者只是接受指针并在以后使用该数据?它是否保留缓冲区?
换句话说:在函数中传递本地创建的或未保留的缓冲区是否安全,或者由我来保持缓冲区的存活?
我在iOS / Mac上使用Objective-c和/或Swift使用OpenGL,恐怕GC(ARC)可以在将其发送到GPU之前使用我的缓冲区。
答案 0 :(得分:0)
这是安全的,但文档上并不清楚,至少在https://www.opengl.org/sdk/docs/man/html/glUniform.xhtml上找到的版本
通过调用glUniform保留分配给它们的值,直到 下一个成功的链接操作发生在程序对象
上
答案 1 :(得分:0)
glUniform不使用任何缓冲区(如果我错了,请纠正我)。 根据{{3}},glUniform调用修改了着色器程序中的变量。 在我看来,你可以认为Uniform调用好像它是C中的“=”符号,例如a = b;其中a是着色器程序中的统一,b是程序中的变量。 (如果我的解释不合适,请感觉纠正我)