2011-03-22 161 views
0

我希望把一些照明进入一个项目,我创建的,但我得到以下编译器错误:如何初始化一个GLfloat数组?

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); 

回答

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}; 
0

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

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

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

+1

+1提的逗号操作符 – pmg 2011-03-22 11:03:15

3

必须使用{ ... },不(...)初始化你的花车阵。

注意,你这样做是正确的第一行:

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

但错在下面几行:

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