0

我尝试在 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'

我做错了什么?

4

1 回答 1

0

[编辑]

在 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 中提供一个字符串吗?

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

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

于 2014-02-20T14:50:57.160 回答