我有一个multiviewport OpenGL建模器应用程序。它有三个不同的视口:透视,正面和顶部。现在我想为每个视口绘制一个标签,而不是成功完成它。
为每个不同的视角打印标签的最佳方法是什么? 编辑:结果 以下是我尝试的结果:
我不明白为什么透视视口标签像这样被扰乱了。而且,实际上我想在左上角绘制它。我怎么做到这一点,因为我认为它想要3D坐标...是吗?这是我绘制标签的代码
glColor3f(1,0,0);
glDisable(GL_DEPTH_TEST);
glDepthMask(GL_FALSE);
glRasterPos2f(0,0);
glPushAttrib(GL_LIST_BIT); // Pushes The Display List Bits
glListBase(base - 32); // Sets The Base Character to 32
glCallLists(strlen("Perspective"), GL_UNSIGNED_BYTE, "Perspective"); // Draws The Display List Textstrlen(label)
glPopAttrib();
我使用此处的代码http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13
感谢
答案 0 :(得分:4)
对于每个视口切换到允许您提供“视口空间”坐标的投影,禁用深度测试(glDisable(GL_DEPTH_TEST)
)和深度写入(glDepthMask(GL_FALSE)
)并使用其中一种方法绘制文本用于在OpenGL中绘制文本(纹理映射字体,将全文渲染为纹理绘图,将字形绘制为实际几何体)。
答案 1 :(得分:1)
除了@ datenwolf的优秀答案之外,我还会添加一些建议:而不是在视口中绘制标签,通常更容易(通常看起来更好)绘制标签在视口外面。这样可以避免标签覆盖视口中的任何内容,并且可以轻松获得漂亮,干净的抗锯齿文本(您 通常也可以在OpenGL中执行此操作,但这更难)。
如果您决定需要在视口内绘制文本,我只会在@datenwolf中添加一个小细节:因为您通常希望您的文本消除锯齿(即使图片的其余部分不是't)你通常想要在图片本身的所有其他几何图形之后绘制标签。如果你没有打开抗锯齿,你通常会想要打开它来绘制文本。