我正在尝试创建一个三维十六进制映射。六边形的下一个和下面的匹配。像这样 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
答案 0 :(得分:2)
你正朝着正确的方向前进。有很多方法可以使用OpenGL进行绘制,虽然人们会认为这是最快的方法,但它会在屏幕上显示六边形。要绘制多个六边形,请将glBegin(GL_POLYGON)
... glEnd()
代码段包装在for
循环中,以呈现适当数量的六边形。
要调整六边形的大小,您需要调整传递给glVertex3f
的值。在原始帖子中,您绘制的六边形包含在半径为1的圆中(因为sin
和cos
函数的系数也是一个)。如果使用较小的半径(即小于1的值),则会得到较小的六边形。
最后,每个六边形当前都以原点为中心。要将它们移动到x和y中[-1,1]的查看区域内的其他位置,只需将偏移添加到传递到glVertex3f
的x和y坐标。由于每个六边形可能都有自己的偏移量,因此您可能希望使用一个大小适合六边形数量的数组,并通过外部循环对其进行索引。