我知道要使用标准的push/pop操作来保存/恢复矩阵状态。我一直无法找到像使用glLineWidth()或glColor4ub()时一样的保存/恢复状态的惯例。保存/恢复OpenGL ES状态的正确方法
只要您在任何时候想要绘制任何东西但您可以在自己的绘图函数中看到自己的位置的示例,就可以正确地设置线宽或颜色,就可以调用一些单独的绘图函数在你不知情的情况下你的线条宽度,然后当你继续绘画的时候,它不会像预期的那样出现。
为了解决这个问题,您可以在调用任何你不知道它做什么但看起来不雅的函数之后重置你的线宽,我觉得应该已经有一个解决方案,但是我错过了它以某种方式。
对于我自己的代码,我在每一个绘图函数的开始一直在做这样的:
GLfloat savedLineWidth = 1.0f;
glGetFloatv(GL_LINE_WIDTH, &savedLineWidth);
glLineWidth(lineWidth);
,然后在绘图函数结束时恢复状态,像这样:
glLineWidth(savedLineWidth);
这并不能真正帮助我,尽管除非我认为每个绘图函数我都不知道它的内部是好的,并且可以自行恢复状态。
我应该做出这样的假设吗?或者我错过了什么?
这很酷。我不知道glPushAttrib()和glPopAttrib()在OpenGL的非ES变体中可用。我也没有考虑堵塞巴士的请求。 是的,我确实有代码。这只是我现在摆弄的一些绘图代码,以尝试学习OpenGL ES。在我制定任何不良习惯之前,我只是寻找一些指导。 – djdrzzy 2010-08-19 15:35:35