2012-01-12 26 views
2

是否有任何种类的应用程序,工具,库,...从矢量图像生成OpenGL函数? 为了避免任何误解:我不想在我的2D OpenGL项目中渲染类似SVG文件的东西,我想在我最喜欢的矢量应用中创建矢量图并将其转换为OpenGL代码,而不是通过代码创建。这将节省大量的时间。从矢量图像的OpenGL自动代码生成器

+0

如果不是SVG那么是什么?一个Adobe Illustrator .ai文件? – jowo 2012-01-12 03:55:25

+0

重点是我“不要”“渲染”“文件”,不管它是什么 – 2012-01-12 04:08:50

+0

我的意思是你想从哪个文件格式转换而来。你将需要一种格式来保存你的矢量应用程序。然后是一个转换器,将它转换成一个容易加载到OpenGL顶点缓冲区的文件。 – jowo 2012-01-12 07:42:52

回答

5

不生成OpenGL代码。将顶点数据以可以加载到VBO的形式存储。这是确定生成的数据码 - 是这样的:

struct { float position[3]; float texcoord[2]; float color[4]; } vertices[] = 
{ 
    // Auto-gen code here... 
    { {1, 1, 0}, {0, 1}, {1, 0, 1, 1} }, 
    ... 
}; 

但你可能会发现,它只是作为简单的(和更快的编译)如果你的内存直接从二进制数据文件映射数据。当然,代码版本的优点是可以在您的可执行文件中生存,而不必乱用应用程序资源,这反过来又具有不让您在没有重新编译的情况下更改矢量图像的缺点。

+0

tanx 4你好,问题是形状比这更复杂,而且它们会变成动画。您的解决方案非常聪明,适用于某些静态项目。不幸的是不是我的:( – 2012-01-12 04:16:55

+0

@ mk.persia:不知道具体情况,很难说它们是否适合你的问题,但我会提出一些你应该考虑的问题:1)维也纳国际组织不限制你可以画什么相对于即时模式;它们主要提供了一种不同的方式来存储顶点数据(尽管您可能需要其他数据结构来识别阵列的哪些部分表示不同的形状等)。 2)VBOs支持动态变化的数据。 – 2012-01-12 04:31:38

+0

@MarceloCantos:你能否提供一个pt的例子。 2)? – Rekin 2012-01-12 08:54:15