0

3D 16 進マップを作成しようとしています。六角形が次と下で一致する場所。この ヘックスマップのように

ユーザーが (x) 行、(X) 列を入力すると、そのようなマップが作成されます。

ある時点で六角形を積み重ねてテクスチャを作成できるようにしたいので、3Dが必要ですが、今は疑問です。六角形の描き方。私はまだOpenGLにかなり慣れていませんが、16進数を描画するためにこれを持っています

   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;

それが最善の方法であり、その唯一の面であるかどうかはわかりません..しかし、それは1つの巨大な六角形を作るだけです. もちろん、もっと小さいものも必要です。このプロジェクトをどのように進めるかについての助けは素晴らしいでしょう! 私が持っているプロジェクトで

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

1 に答える 1

2

あなたは正しい方向に向かっています。OpenGL を使用して描画するには多くの方法があり、これが最速の方法であると主張する人もいますが、画面上に六角形が表示されます。複数の六角形を描画するには、適切な数の六角形をレンダリングするループでglBegin(GL_POLYGON)...glEnd()スニペットをラップします。for

六角形のサイズを調整するには、 に渡す値を調整する必要がありますglVertex3f。元の投稿では、半径 1 の円に含まれる六角形を描いています (関数sincos関数の係数も 1 であるため)。より小さな半径 (つまり、1 未満の値) を使用すると、より小さな六角形が得られます。

最後に、現在、各六角形は原点を中心にしています。x と y の [-1,1] の表示領域内の別の場所にそれらを移動するには、に渡す x と y 座標にオフセットを追加するだけですglVertex3f。各六角形にはおそらく独自のオフセットがあるため、六角形の数に合わせたサイズの配列を使用し、外側のループでインデックスを付けたいと思うでしょう。

于 2013-02-20T08:05:03.513 に答える