c – 在前景中渲染文本

c – 在前景中渲染文本,第1张

概述我试图在MacOSX 10.7.2下的OpenGL / GLUT应用程序中渲染前景中的一些字符串. 目前我使用此代码在前台绘制几行,它工作正常. void drawForeground() {int width = 10;int height = 10;glMatrixMode(GL_PROJECTION); glPushMatrix(); gl 我试图在MacOSX 10.7.2下的OpenGL / gluT应用程序中渲染前景中的一些字符串.

目前我使用此代码在前台绘制几行,它工作正常.

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 linesglEnd();/*********************/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 – 在前景中渲染文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1229996.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存