0

我正在尝试创建一个 3-D 十六进制地图。六边形在下一个和下一个匹配的位置。像这张 十六进制地图

用户将输入(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
4

1 回答 1

2

你正朝着正确的方向前进。使用 OpenGL 绘制的方法有很多,虽然人们会认为这是最快的方法,但它会在屏幕上显示一个六边形。要绘制多个六边形,请将您的glBegin(GL_POLYGON)...glEnd()片段包装在一个for循环中,以呈现适当数量的六边形。

要调整六边形的大小,您需要调整传入的值glVertex3f。在您的原始帖子中,您正在绘制一个包含在半径为 1 的圆中的六边形(因为您的sincos函数的系数也是一个)。如果您使用较小的半径(即小于一的值),您将获得较小的六边形。

最后,您的每个六边形当前都以原点为中心。要将它们移动到 x 和 y 中 [-1,1] 的查看区域内的不同位置,只需向传入的 x 和 y 坐标添加偏移量glVertex3f。由于每个六边形可能都有自己的偏移量,因此您可能希望使用一个大小适合六边形数量的数组,并通过外循环对其进行索引。

于 2013-02-20T08:05:03.513 回答