2017-10-11 162 views
1

在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

回答

2

统一阵列被保证有连续的地址。制服u_MVPMatrix[i]因此具有位置mMVPMatrixHandleEyes + i。这个位置可以通过传递给glUniformMatrix4fv来设置一个矩阵(或多个连续的矩阵)。

偏移参数,相反,是偏移进入浮法[]数组传递,不进GLSL阵列。

+0

谢谢,我会尽快调查此尽可能:-)如果它工作 – java

+0

以及可能接受给予好评...谢谢你!!!!!!!!!!!!!!!!! – java