如何初始化GLfloat数组?

时间:2011-03-22 10:24:34

标签: c++ c

我想在我创建的项目中添加一些光照,但是我得到以下编译器错误:

error C2440: 'initializing' : cannot convert from 'float' to 'GLfloat []' 

有什么问题?

GLfloat ambientColor[] = {0.2f, 0.2f, 0.2f, 1.0f};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientColor);


GLfloat lightColor0[] = (0.5f, 0.5f, 0.5f, 1.0f);
GLfloat lightPos0[] = (4.0f, 0.0f, 8.0f, 1.0f);

glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor0);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightPos0);

GLfloat lightColor1[] = (0.5f, 0.2f, 0.2f, 1.0f);
GLfloat lightPos1[] = (-1.0f, 0.5f, 0.5f, 0.0f);

glLightfv(GL_LIGHT1, GL_DIFFUSE, lightColor1);
glLightfv(GL_LIGHT1, GL_DIFFUSE, lightPos1);

4 个答案:

答案 0 :(得分:5)

您使用了错误的数组初始化语法。您不能使用()列出数组元素 语法是{list_of_the_elements}

所以将()更改为{}

GLfloat lightColor0[] = (0.5f, 0.5f, 0.5f, 1.0f);

GLfloat lightColor0[] = {0.5f, 0.5f, 0.5f, 1.0f};

答案 1 :(得分:3)

GLfloat lightColor0[] = (0.5f, 0.5f, 0.5f, 1.0f);

你需要花括号{...}而不是括号(...)。编写它的方式,编译器会看到一些浮点文字,其间有逗号运算符。逗号系列的最后一个表达式成为括号内的值。

答案 2 :(得分:3)

您必须使用{ ... },而不是( ... )来初始化浮动数组。

请注意,您在第一行中正确执行此操作:

GLfloat ambientColor[] = {0.2f, 0.2f, 0.2f, 1.0f};

但下面的行中有错误:

GLfloat lightColor0[] = (0.5f, 0.5f, 0.5f, 1.0f);

答案 3 :(得分:0)

在显示的示例中,您在lightColor0及以后的数据周围有括号。我认为你的意思是用于ambientColor的花括号。