2010-03-09 34 views
1

我对OpenGL非常陌生。我正在编写一个在屏幕上显示飞行3D文本的程序。我需要知道某些文本字符串何时出现(绘制)到屏幕上并且对用户可见。该程序需要识别显示哪些文本字符串。 (注意:虽然我的问题涉及文本,但它可以推广到任何OpenGL对象)。起初,我开始认为我可以使用OpenGL的拣选机制,但到目前为止,我只看到了一些例子,其中选择区域侧重于某种用户交互。我想知道什么对象显示在整个窗口区域。这导致我认为我在错误的轨道上...我错过了什么?如何确定何时在OpenGL中绘制对象?

欢迎任何建议。

回答

0

嗯,它实际上是3D吗?或者它只是二维空间屏幕上的二维文字?在那种情况下,我只会手动跟踪它。你究竟如何绘制文字?

一般来说,你这样做的方式是用“平截头体检查”,你基本上只是为相机制作一个音量,并测试你是否在其内部是3d对象。

0

您可以尝试OpenGL的反馈机制。在这种模式下,OpenGL生成片段并将它们传递给反馈缓冲区。如果有东西被裁剪,则不会生成碎片。当文本变得可见时,您会在片段缓冲区中找到相应的片段。

link应该让你开始。

这是另一个链接,Question 10.010似乎与你想要的特别相关。

+0

是否不反馈在最新的GL转换中弃用? – genpfault 2010-03-09 16:45:45

+1

是的。它已被弃用。 OpenGL着色器现在可以“导出”有关几何的任何信息,实际上glFeedback不再是必需的。 – Luca 2010-03-12 21:37:19

2

您可以使用查询对象(特别是使用GL_ARB_occlusion_query扩展Specification创建的那些对象)。这些对象用于查询使用一系列OpenGL操作(开始/结束等等)来呈现多少片段。

另一个方案(仅软件),是确定边框为您呈现的文本,然后用数学计算边框是否认为截(从用于渲染当前来看衍生里面。

笔记:使用OpenGL的采摘没有必要意味着使用gluPickMatrix的可以渲染场景你“原样”,并且查询所呈现的名称(altought采摘从OpenGL的3弃用)

查询对象。很容易使用,而且它们很轻便。拣配是另一个很好的解决方案大多数硬件,但比查询对象更多。

相关问题