我知道要使用標準的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