2011-01-26 2 views
1

У меня проблема, которую я не понимаю.Матричные матрицы Shader

У меня есть шейдер

String[] vsSource = new String[] { 
     "attribute vec3 aVertex;", 
     "attribute vec3 aColor;", 

     "uniform mat4 uMVMatrix;", 
     "uniform mat4 uPMatrix;", 

     "varying vec3 vColor;", 

     "void main(void) {", 
     " vColor = aColor;", 
     " gl_Position = uMVMatrix * uPMatrix * vec4(aVertex, 1.0);", 
     "}" }; 

Я установил обе матрицы uMVMatrix и uPMatrix, и я хочу, чтобы умножить их в затенении. Когда я пытаюсь это сделать, мой экран остается черным.

Когда я перемножу его на Java и передаю его одной переменной mat4, я вижу свой треугольник.

String[] vsSource = new String[] { 
     "attribute vec3 aVertex;", 
     "attribute vec3 aColor;", 
     "uniform mat4 mvpMatrix;", 

     "varying vec3 vColor;", 

     "void main(void) {", 
     " vColor = aColor;", 
     " gl_Position = mvpMatrix * vec4(aVertex, 1.0);", 
     "}" }; 

Может кто-нибудь сказать мне, почему я не могу их размножать в шейдере?

ответ

2

Попробуйте инвертировать порядок матриц в затенении, т.е.

gl_Position = uPMatrix * uMVMatrix * vec4(aVertex, 1.0); 
+0

сделал трюк ... Я думал, что многократно коммутативен !? В любом случае, спасибо! – WarrenFaith

+2

Матричное умножение (вообще) _not_ коммутативно. Рад, что это сработало. – bosmacs

Смежные вопросы