Массив glsl es const mat2
Я пытаюсь скомпилировать следующий код в Open GL ES 2.0 (в RenderMonkey):
const mat2 ma[2] = mat2[2](
mat2( vec2(0.0, -1.0), vec2(1.0, 0.0) ),
mat2( vec2(0.0, -1.0), vec2(1.0, 0.0) )
);
Но компилятор говорит:
OpenGL ES Preview Window: Compiling vertex shader API(OpenGL ES) /Effect Group 1/Effect1/Pass 0/Vertex Program/ ... failure
COMPILE ERROR: API(OpenGL ES) /Effect Group 1/Effect1/Pass 0/Vertex Program/ (13): ERROR: 0:13: 'constructor' : if a matrix argument is given to a matrix constructor, it is an error to have any other arguments.
COMPILE ERROR: API(OpenGL ES) /Effect Group 1/Effect1/Pass 0/Vertex Program/ (10): ERROR: 0:10: '=' : cannot assign to 'const array of 2X2 matrix of float'
Что я делаю не так?
1 ответ
Решение
[ РЕДАКТИРОВАТЬ ]
В webgl/chrome я получаю это:
ERROR: 0:4: 'ma' : arrays may not be declared constant since they cannot be initialized
ERROR: 0:4: '=' : syntax error
Это не выглядит хорошо.
Возможно связано: Как определить постоянный массив в GLSL (OpenGL ES 2.0)?
Настольный GL...
Ваш код работает для меня, однако я получаю это без установки версии:
warning C7551: OpenGL first class arrays require #version 120
Можете ли вы предоставить #version
строка в RenderMonkey?
Я сомневаюсь, что это так, но действительно старая карта или драйверы могут быть фактором.
Я не думаю, что вам нужно второе 2
или: const mat2 ma[2] = mat2[](...
Это хорошо