我正在尝试在Android的OpenGL ES 2.0中从一个对象类传递一组点光源到顶点着色器中。这些点光源被存储为一个float[]数组,理想情况下,着色器应该将这些浮点数读取为vec4[]数组。
可以通过调用glUniform4fv(...floatArray, 0)将float[]传递到顶点着色器,并在顶点着色器中声明为uniform vec4 u_PointLights[990],但这样做非常慢。
我正在尝试将这些浮点数放入GPU内存中;首先考虑使用VBO,但是绑定数据并将其传递给着色器后,只能读取单个vec4而不能读取数组(即不能声明attribute vec4[] a_PointLights)。
如何最好地将第二个vec4[]传递到着色器中?
可以通过调用glUniform4fv(...floatArray, 0)将float[]传递到顶点着色器,并在顶点着色器中声明为uniform vec4 u_PointLights[990],但这样做非常慢。
我正在尝试将这些浮点数放入GPU内存中;首先考虑使用VBO,但是绑定数据并将其传递给着色器后,只能读取单个vec4而不能读取数组(即不能声明attribute vec4[] a_PointLights)。
如何最好地将第二个vec4[]传递到着色器中?
glUniform4fv
的频率是多少?每帧一次吗? - undefined