在OpenGL中制作一张带有文本的"纸条"(特别是在iOS 5上)

kur*_*kun 3 opengl-es ios glkit

我从来没有做过OpenGL,但我正在寻找关于我正在练习的AR应用程序上这个特定问题的一些指示.

我想创建一个带有"扁平矩形"的应用程序以及写在矩形表面上的文本.在视觉上,我想象着一张纸上写着文字的东西.每次应用程序启动时,文本都会有所不同(文本是从plist文件中提取的).

用户可以从各个方向查看纸张,就像在他面前挂着一张纸一样.

在OpenGL中这是微不足道的吗?我该怎么开始?

对于真正开放式的问题感到抱歉,但我想知道这种事情是如何完成的.

看一下Xcode示例项目中的OpenGL模板源代码,我看到有一个很大的顶点数组.我认为要创建一个"平面"矩形,我只需要删除或使z轴为零.然后动态文本将附加到扁平矩形的表面......我不知道该怎么做......

Dam*_*mon 6

这个问题很难毫不含糊地回答.一般来说,这是微不足道的,但事实并非如此.

绘制一个"带有东西的扁平矩形"是一对API调用,尽可能简单.以高效的方式在OpenGL 绘制文本,高质量,没有大的预处理是一个完全不同的故事.

我要做的是使用iOS下的"正常系统支持"方式渲染文本(就像在任何窗口中绘制一样,我不知道这个具体细节),但是绘制到位图而不是屏幕上.应该支持这一点,几乎每个操作系统都支持这个至少10 - 15年.然后将此位图转换为纹理,绑定它,并使用OpenGL绘制平凡的四边形(设置一个顶点缓冲区,其中包含4个顶点,每个顶点都是一个纹理坐标,并绘制两个三角形 - 就像它一样容易).

它的巨大优势在于您可以使用已安装的系统字体(或任何可用的字体),您不需要生成位图字体,也不需要考虑真正难看的东西,如提示和适当的间距,混合不同的文本样式等要容易得多.当然,OpenGL也内置了对文本的支持,但它也不是非常高效或不错.如果文本没有每毫秒都改变,那么最好使用操作系统提供的标准渲染器来渲染它(是的,可能不会硬件加速,但是因为用户必须阅读文本,它可能不会每毫秒都改变一次).

如果你的"纸张"也应该弯曲和扭曲,或者做一个页面剥离效果而不仅仅是一个扁平的矩形,它会变得更加复杂.在这种情况下,你需要对它进行测试,这可能比听起来更难.并非所有的细分都适用于所有弯曲/扭曲,或者它们确实没有最佳(读取最小)顶点数量.

有一篇关于"页面剥离"的文章以及其中一个GPU Gems或GPU Pro书中的这些细节,让我搜索一下......

有:Andreas Bizzotto:"基于着色器的电子书阅读器 - 页面剥离效果",GPU Pro2 pp.278-299

也许你可以获得一份副本,或者有幸在Google Books上找到它.