代码之家  ›  专栏  ›  技术社区  ›  Sam Becker

有没有简单的方法生成OpenGL代码来从图形用户界面绘制形状?

  •  1
  • Sam Becker  · 技术社区  · 15 年前

    我很喜欢在游戏编程的环境中学习使用OpenGL,我也尝试过创建小的形状。我想知道是否有任何资源或应用程序可以通过一个简单的类似油漆的界面生成类似下面的代码。

    glColor3f(1.0, 0.0, 0.0);
    glBegin(GL_LINE_STRIP);
    glVertex2f(1, 0);
    glVertex2f(2, 3);
    glVertex2f(4, 5);
    glEnd();
    

    我很难想到正确的尺寸来生成形状,并得出正确的坐标。

    为了澄清这一点,我并不是在寻找一个我可以自由地把东西画进去并期望它能创建好的代码来使用的程序。更直观地表示和修改所需的坐标集。

    我在画图中画了一个形状,测量了像素之间相对于一个点的距离,在一定程度上解决了这个问题,但并没有那么优雅。

    4 回复  |  直到 14 年前
        1
  •  1
  •   don    14 年前

    听起来您正在寻找将二维几何图形导入应用程序的方法。我认为最好的方法是开发一个内容管道。就像这样:

    1. 你可以在一个3D建模程序中创建你的内容,比如谷歌的SketchUp。在您的例子中,您将使用多边形绘制二维形状。

    2. 您需要一个转换工具来将数据从原始格式转换成目标应用程序可以理解的格式。从SketchUp获取多边形和顶点数据的一种方法是导出到collada,并让您的工具读取和处理它。(最简单的格式是三角形或线条列表。)

    3. 在代码中编写一个几何加载程序,用于读取由转换工具创建的数据。需要编写使用顶点数组显示几何图形的OpenGL代码。

        2
  •  0
  •   dicroce    15 年前

    您将使用的坐标仅取决于您如何定义您的视区以及您操作的分辨率。实际上,您可能会考虑在任意坐标系中收集鼠标单击的坐标,然后将这些坐标映射到OpenGL坐标。

        3
  •  0
  •   Chris H    15 年前

    你想要什么样的图书馆?

    类似的东西 方格(dx,dy);? 牵引圆(半径);?

    DrawPoly(x1,y1,x2,y2…..);?

    这不是和glvertex完全一样,但名字不同吗?抽象在哪里?

        4
  •  0
  •   matt    15 年前

    我做了一个…它将获取位图图像,并从中生成几何图形。尝试查找三角测量。

    第一步是生成形状的边缘,将其从像素转换为顶点和边缘,找到所有边缘像素,并在每个像素处放置一个顶点,然后基于顶点之间的距离,或者(更好)基于边缘之间的渐变差异,以剔除顶点并减少网格的多边形计数。

    如果图形绘制程序使用的是“矢量图形”而不是像素,即绘制点并在点之间绘制线,则可以跳过第一步,只需进行三角测量。

    第二步,一旦你有了你的边和顶点是三角测量,为了生成三角形,耳剪辑是一个简单的方法,例如。

    关于坐标的使用?正如其他人所说,这完全取决于你,为了简单起见,ID只在像素坐标下工作。

    然后,您可以根据需要缩放和转换形状以供使用。