我在使用mac上的OpenGL中的模板測試進行繪圖時遇到了問題。當我第一次畫場景時,模板工作正常。我在中間繪製了一個半透明的黑色矩形,寫入啓用的模板緩衝區,然後更大的藍色矩形寫入模板緩衝區。我得到正確的結果,當窗口首先彈出,它看起來像這樣:在OpenGL中更新模板緩衝區時的問題
然而,當我調整窗口的大小,並繪製函數被再次調用,我得到一個結果,它看起來像:
有時怪異的空白遵循中間的矩形,其他時間似乎是隨機安排的白色卡扣,但是當你回到那個窗口大小保持這些安排。我無法找到這個在線的解決方案。這裏是我的渲染功能,這就是所謂的窗口大小任意時間:
glClearColor(0, 0, 0, 1);
glClearStencil(0x00);
glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
// Replace data in the stencil buffer with 1s if it passes the test
// which should be GL_ALWAYS
glStencilFunc(GL_ALWAYS, 1, 0xFF);
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
// Allow data to be written to the stencil buffer.
glStencilMask(0xFF);
p->fillSquare(1, 1, 1, 0.3, -0.25, 0.25, 0.25, 0.25, -0.25, -0.25, 0.25, -0.25); // Write a semi transparent black rectangle
glStencilMask(0x00); // Disable writing to the stencil buffer.
glStencilFunc(GL_NOTEQUAL, 1, 0xFF); // Only draw if stencil value is 1.
// Draw blue rectangle
p->fillSquare(0.60, 0.60, 0.80, 1, -0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5);
glfwSwapBuffers(w);
在你想知道的情況下,p->fillRect()
需要四個浮標爲矩形的RGBA顏色,然後在x和y各自的座標頂點。
看來清理模板可能存在某種問題,但我真的不能確定。我的OpenGL初始化函數中打開了模板測試。 如果您需要了解有關我的代碼或系統的其他方面的其他信息,請隨時發表評論。
注意:我沒有使用OpenGL的深度,所以可以不清除深度緩衝區(我測試過了)。