2010-01-28 47 views
1

我很喜欢学习在游戏编程环境下使用OpenGL,并且我尝试过创建小形状。我想知道是否有任何资源或应用程序可以通过简单的画图界面生成类似于以下代码的代码。是否有任何简单的方法可以生成用于从GUI绘制形状的OpenGL代码?

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

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

为了澄清,我不是寻找一个程序我就可以自由绘制的东西在,并期望它创造了良好的代码中使用。更多的是表达和修改你需要的坐标集的可视方式。

我解决了这个在一定程度上通过绘制油漆的形状和测量相对于单点的像素之间的距离,但它不是那么优雅。

+0

为什么不绘制图像并将其显示为纹理? – AshleysBrain 2010-01-28 15:34:50

+0

这是一个不错的主意,我不太确定如何做到这一点。我想这是另一个问题。 – Sam152 2010-01-28 15:36:31

+0

为什么你想在第一个地方生成代码?通常的方法是在像Illustrator这样的工具中绘制形状,将它们存储在文件中(尝试使用SVG,它基于xml),然后在运行时通过解释文件内容来绘制形状。 – 2010-01-29 13:57:48

回答

1

这听起来像你正在寻找一种方法来将2d几何体导入到应用程序中。我认为最好的方法是开发一个内容管道。它是这样的:

  1. 你会创建你的内容在像谷歌的Sketchup三维建模程序。在你的情况下,你会使用多边形绘制2D图形。

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

  3. 在您的代码中写入一个几何加载程序,该程序读取您的转换工具创建的数据。您需要编写使用顶点数组来显示几何的opengl代码。

0

坐标您将使用刚刚取决于你如何定义你的视口,你在操作的分辨率。事实上,你可能会想收集鼠标点击的坐标在任何你想要的任意坐标系统,然后将这些坐标映射到opengl坐标。

+0

这是一个好主意,但您会认为有一些成熟的应用程序可以帮助您完成这项工作。 – Sam152 2010-01-28 15:23:21

0

你期待什么样的图书馆?

像 drawSquare(DX,DY);? drawCircle(radius);?

drawPoly(X1,Y1,X2,Y2 ...);?

是不是完全一样,但glVertex用不同的名称?抽象在哪里?

0

我做了其中的一个......它将需要一个位图图像,并从中生成几何图形。尝试查找三角测量。

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

如果你的形状绘制程序与“矢量图形”,而不是像素,即绘制点,并让他们之间绘制的线条的作品,那么你可以跳过第一步,你只需要做三角测量。

第二步,一旦你有你的边和顶点是三角剖分,为了生成三角形,耳廓修剪就是一个简单的方法。

至于坐标使用?这完全取决于其他人所说的,为了保持简单,我只是在像素坐标中工作。

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

相关问题