2011-11-11 47 views
1

我想創建與隨後使用glVertex3i繪製隨機生成的值的2×2陣列,例如:使高度圖的替代方法

glBegin(GL_POLYGON); 
int x = 5; 
int z = 5; 
for (int i=0; i<width; i++) 
{ 
    for (int j=0; j<height; j++) 
    { 
     glVertex3i(x, heightmap[i][j], z); 
    } 
    x -= 0.5; 
    z -= 0.5; 
} 
glEnd(); 

時遇到的唯一問題是,地圖ISN我認爲我沒有在z維上畫,因爲我所獲得的只是1面。

什麼可能是錯誤的?顯然,算法現在是基本的,但它只是一個起點。

回答

4

什麼可能是錯的?

讓我們從這裏開始:

glBegin(GL_POLYGON); 

多邊形是需要是平面的。所有的頂點必須位於一個平面上。如果他們不這樣做,那麼OpenGL不負責它如何渲染。您不能將高度圖繪製爲單個多邊形,並期望獲得合理的結果。您必須繪製三角形,可以使用一系列GL_TRIANGLE_STRIP或使用GL_TRIANGLES

然後,就是基督徒說的。

3

也許你的意思是

float x = 5.0f; 
for (int i=0; i<width; i++) 
{ 
    float z = 5.0f; 
    for (int j=0; j<height; j++) 
    { 
     glVertex3f(x, heightmap[i][j], z); 
     z -= 0.5f; 
    } 
    x -= 0.5f; 
} 

或用xz切換,取決於你的約定。但首先,不要從int中減去0.5,它會畫兩次相同的頂點。其次,一個變量需要在內循環中運行,另一個在外循環中運行。或者我誤解了這個問題?

你確定你想要整個高度圖組成一個多邊形嗎?也許我真的誤解了這個問題?

+0

你是對的,關於var位置。謝謝。 – user985351