2013-02-20 249 views
0

我想創建一個三維十六進制圖。下一個和下一個六邊形的匹配。像這樣 hex map創建一個三維六角形圖

用戶輸入(x)行,(X)列,它會創建一個類似的地圖。

我需要3d由於我希望能夠堆疊六角形在某一點,也紋理他們,但現在質疑。我如何繪製六角形。我仍然很新的OpenGL的,但我有這個畫一個十六進制

glBegin(GL_POLYGON); 
for I := 0 to 6 do 
begin 
    glVertex3f(sin(i/6.0*2*PI),cos(i/6.0*2*pi),-2); 
end; 
glEnd; 

不知道這就是最好的方式和其唯一的一面。但也只是讓一個巨大的六邊形。當然我會需要更小的。任何關於如何參與這個項目的幫助都會很棒!在我的項目中,我有

prxleft = -1 
prxRight = 1 
prxTop = 1 
prxBottom -1 

回答

2

您正朝着正確的方向前進。有很多方法可以使用OpenGL進行繪製,而人們會認爲這是最快的方法,它會讓你在屏幕上顯示一個六邊形。要繪製多個六邊形,請在for循環中包裝glBegin(GL_POLYGON) ... glEnd()片段,該循環呈現適當數量的六邊形。

要調整六角形的大小,您需要調整您傳遞到glVertex3f的值。在原始文章中,您正在繪製包含在半徑爲1的圓中的六角形(因爲您的sincos函數的係數也是1)。如果使用較小的半徑(即小於1的值),則會得到較小的六邊形。

最後,你的每個六邊形目前都集中在原點。要將它們移動到x和y中[-1,1]的查看區域內的其他位置,只需將偏移添加到您傳入的x和y座標中即可。glVertex3f。由於每個六邊形都可能有自己的偏移量,因此您可能需要使用數組大小​​爲六邊形的數組,並通過外部循環對其進行索引。

+0

我甚至不會開始爭論,如果這是快或不是,它只是徹頭徹尾的棄用功能。 – pmr 2013-02-20 08:07:29

+0

而不是?? – 2013-02-20 08:19:07

+0

@GlenMorse頂點緩衝區對象。 – pmr 2013-02-20 08:43:40