2011-03-22 293 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);