的OpenGL ES:从客户端
问题描述:
在GLSL改变矩阵矢量I的一部分在GLSL的OpenGL ES:从客户端
uniform mat4 u_MVPMatrix[64];
填充有64点矩阵
其用于在自己的游戏进行改造64个形状具有本均匀的。它效果很好!如果
我的问题及其可能改变这个矩阵向量的一部分,如果我例如要旋转或调整有一定的精灵?我可以使用的方法:
glUniformMatrix4fv(int location, int count, boolean transpose, float[] value, int offset)
?
我不明白偏移的说法,我认为是它用作偏移到GLSL矩阵-VEC但显然不是?
GLES30.glUniformMatrix4fv(mMVPMatrixHandleEyes, 1, false, mMVPMatrixEyes, 1);
如果我改变偏移参数我得到一个异常:
java.lang.IllegalArgumentException: length - offset < count*16 < needed
at android.opengl.GLES20.glUniformMatrix4fv(Native Method)
什么是解决这个问题?我是不是应该专注于在GPU端进行更改?但是可以改变制服吗?在GLSL
答
统一阵列被保证有连续的地址。制服u_MVPMatrix[i]
因此具有位置mMVPMatrixHandleEyes + i
。这个位置可以通过传递给glUniformMatrix4fv
来设置一个矩阵(或多个连续的矩阵)。
偏移参数,相反,是偏移进入浮法[]数组传递,不进GLSL阵列。
谢谢,我会尽快调查此尽可能:-)如果它工作 – java
以及可能接受给予好评...谢谢你!!!!!!!!!!!!!!!!! – java