我尝试在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'
我做错了什么?
答案 0 :(得分:0)
[修改
在webgl / chrome中,我得到了这个:
ERROR: 0:4: 'ma' : arrays may not be declared constant since they cannot be initialized
ERROR: 0:4: '=' : syntax error
看起来不太好。
可能相关:How to define constant array in GLSL (OpenGL ES 2.0)?
Desktop GL ...
你的代码对我有用,但是我没有设置版本就得到了这个:
warning C7551: OpenGL first class arrays require #version 120
你能在RenderMonkey中提供一个#version
字符串吗?
我怀疑是这种情况,但真的旧卡或驱动程序可能是一个因素。
我认为您不需要第二个2
:const mat2 ma[2] = mat2[](...
很好