glsl es const mat2 array

时间:2014-02-19 18:08:31

标签: opengl-es glsl glsles rendermonkey

我尝试在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 个答案:

答案 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字符串吗?

我怀疑是这种情况,但真的旧卡或驱动程序可能是一个因素。

我认为您不需要第二个2const mat2 ma[2] = mat2[](...很好