【问题标题】:Creating a 3-D hexagon map创建 3-D 六边形地图
【发布时间】:2013-02-20 07:22:18
【问题描述】:

我正在尝试创建 3-D 十六进制地图。六边形在下一个和下一个匹配的位置。像这样 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

【问题讨论】:

    标签: opengl hexagonal-tiles


    【解决方案1】:

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

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

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

    【讨论】:

    • 我什至不会开始争论这是否很快,它只是彻底弃用的功能。
    • @GlenMorse 顶点缓冲区对象。
    • @radical7 我已经按照你的建议做了很多。但无论我为柱子设置什么偏移量,它都只给我一行。无论如何我已经更新了代码,我应该在这里添加还是提出新问题?
    • @pmr 当然它很慢(就图形性能而言)并且已被弃用,但这是解决问题的好方法。然而,我怀疑 Glen Morse 比试图解释 VBO、着色器管道和所有这些更快。如果兼容性配置文件如此糟糕,我敢肯定NVIDIA would change their tune
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2014-02-11
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多