OpenGL:GL_四边形隐藏部分位图字符

OpenGL:GL_四边形隐藏部分位图字符,opengl,text,graphics,3d,geometry,Opengl,Text,Graphics,3d,Geometry,我试图可视化一个CAD几何图形,其中GL_四边形用于几何图形,并使用文本对位图字符进行注释 对于某些视图方向(图1),GL_四边形部分隐藏文本(如33,32,…) 如果我使用glDisable(GL_DEPTH_TEST)来正确显示文本,那么应该注释背面的文本也会显示出来(图2) 我的目标是在不被遮挡的情况下注释可见的前表面,但在未显示的后表面上注释 (我可以通过稍微将注释法线偏移到四边形来解决此问题,但这会导致我的程序中出现一些其他问题,因此我不喜欢此解决方案) 有人能给我一个解决方案吗?

我试图可视化一个CAD几何图形,其中GL_四边形用于几何图形,并使用文本对位图字符进行注释

对于某些视图方向(图1),GL_四边形部分隐藏文本(如33,32,…)

如果我使用glDisable(GL_DEPTH_TEST)来正确显示文本,那么应该注释背面的文本也会显示出来(图2)

我的目标是在不被遮挡的情况下注释可见的前表面,但在未显示的后表面上注释

(我可以通过稍微将注释法线偏移到四边形来解决此问题,但这会导致我的程序中出现一些其他问题,因此我不喜欢此解决方案)


有人能给我一个解决方案吗?

嗯,我想你已经知道了,因为文本的定位/定向方式,它看起来像是从屏幕上的一个点和从右到左绘制的

如果您不想偏移它(正如您已经提到的,但我仍然建议,因为这是一个简单的解决方案),那么一种方法可能是以与对象旋转相同的方式旋转文本。这将(我希望)只是一个简单的问题,改变你在哪里画的文字,以相同的地方,你画每个四(从而使用相同的矩阵)。当然,这样文本就不会那么清晰了。此解决方案还需要使用不同的对象来呈现文本,例如

编辑2:另一个解决方案是

谁能给我一个解决方案吗

您需要实现碰撞检测引擎

如果三维空间中必须显示标签的点未被遮挡,则在禁用深度测试的情况下渲染文本。这将完全解决您的问题

据我所知,如果你想让信件面向读者,没有其他方法可以解决这个问题——不管你做什么,它们总有一个很好的机会被其他东西部分遮住


由于您需要一种非常特殊的碰撞检测(检测点的可见性),因此可以尝试使用。另一方面,检测光线/三角形(see/)碰撞并不太难实现,尽管在复杂场景中,事情会很快变得更加复杂,您需要实现场景图并使用类似于八叉树的算法。

要使这类事情完美地工作很难。稍微偏移文本几乎是最简单的方法。您也可以像以前一样关闭深度测试,然后在绘制标签之前对面的可见性进行自己的测试。谢谢您的建议,但是glutBitmapCharacter只是直接渲染文本吗?可以旋转吗?对不起,我还假设目标是文本,而不是特定的对象类型。这些示例可能是FreeType字体(、或)。另一个有趣的解决方案,同样,如果您愿意使用其他方式渲染文本,就是使用纹理映射文本。这篇文章似乎涵盖了您的一些问题:感谢您的建议,我将尝试使用selectbuffer。