2016-11-09 13 views
-3

我試圖爲我的代碼實現一個高度圖,但我使用的數組似乎是錯誤的,並且opengl頂點函數無法識別它,有人能幫助我嗎?glVertex3f將數組作爲參數?

float* Createheightmap(int sizex, int sizez) { 
float map[][] = new float[sizex][sizez]; 
for (int i = 0; i < sizex; i++) { 
    for (int j = 0; j < sizez; j++) { 
     map[i][j] = float(0.0); 
    } 
} 
return map; 

} 

void drawterrian(void) { 
    float* map=Createheightmap(sizex,sizez); 
    for (int i = 0; i < sizex; i++) { 
     for (int j = 0; j < sizez; j++) { 
      glBegin(GL_POLYGON); 
       glVertex3f(float(i),map[i][j],float(j)); 
       glVertex3f(float(i+1),map[i+1][j],float(j)); 
       glVertex3f(float(i+1),map[i+1][j+1],float(j+1)); 
       glVertex3f(float(i),map[i][j+1],float(j+1)); 

      glEnd(); 
     } 
    } 
} 

數組的大小在早期功能

+0

*但我使用的數組似乎是錯誤的,並且opengl頂點函數無法識別它*您是什麼意思到的? (P.S:無關,但你泄漏浮點數組,請考慮使用智能ptrs或容器) – Borgleader

+0

它在Eclipse中顯示爲「無效參數」 –

+0

「泄漏浮點數組」的含義是什麼? –

回答

0

被聲明我發現了一個similar problem到你的。您是否在任何地方將glNormal的法線分配給多邊形?

另一件會成爲問題的事情是,您超出了map的範圍,其中i+1j+1索引位於drawterrian。修改for循環的邊界以確保不會發生。

正如評論中所述,在使用new創建變量時要小心。請務必在delete之後。您可能需要以不同的方式調整您的Createheightmap函數。