大佬教程收集整理的这篇文章主要介绍了c – 在前景中渲染文本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
void drawForeground() { int width = 10; int height = 10; glMatrixMode(GL_projection); glPushMatrix(); glLoadIdentity(); glOrtho(-1,width,-1,height,1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glDepthMask(GL_falSE); glBegin(GL_LInes); //Draw the lines glEnd(); /*********************/ glPopMatrix(); glMatrixMode(GL_projection); glPopMatrix(); glDepthMask(GL_TRUE); }
现在我想画一些文字.在上一个函数中,我在添加星号的行中添加了这段代码:
glRasterPos2d(2,2); glutBitmapCharacter(GLUT_BITMAP_HelVETICA_10,'c');
但它不起作用.如果我在drawForeground方法之外使用相同的两行,则会出现’c’.
我已经调用了glDisable(GL_TEXTURE_2D),没有任何改变.
有人可以帮我理解我的错误吗?
解:
事实证明,解决方案是使用glDisable(GL_LIGHTinG)禁用光照,在渲染文本后重新启用它.
我想强调一下,文本总是在同一维度上呈现,与glOrtho调用的参数无关.
调用glutBitmapCharacter()之前设置的颜色是什么?如果绘图颜色设置为不显示在背景中的颜色,则可能看起来就像没有绘制任何内容.
除了glDisable(GL_TEXTURE_2D)之外,您是否尝试过调用glDisable(GL_TEXTURE)?
还有其他的东西,比如你在代码中的其他地方启用的灯光,然后在渲染可能影响事物的文本之前不要禁用吗?当我在过去遇到这样的错误时,似乎它们经常与OpenGL状态中某些我没想到的状态相关,通常是因为我对其他地方的状态进行了一些更改而忘记撤消它.我建议您尝试系统地在代码中注释掉各种OpenGL调用,即使它们看起来没有直接关系,并查看字符是否出现过.如果他们这样做,那么您将知道需要进行哪些状态更改/撤消.
以上是大佬教程为你收集整理的c – 在前景中渲染文本全部内容,希望文章能够帮你解决c – 在前景中渲染文本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。