2012-04-10 83 views
1

最近我的遊戲引擎進行中已經開始拋出OpenGL錯誤的地方,他們應該是不可能的。呈現幾幀後,突然我開始從glColor得到錯誤:glColor,glMatrixMode神祕地給出「無效操作」錯誤

print(gl.GetError()) --> nil 
gl.Color(1, 1, 1, 1) 
print(gl.GetError()) --> INVALID_OPERATION 

如果我不來電來訪glColor,我後來從glMatrixMode得到一個無效的操作錯誤。

按照GL手動,glColor不應該引發錯誤,並glMatrixMode只有當它在glBegin和glEnd,我查過是不是這樣間。這些功能是否有其他原因會引起錯誤,我不知道?也許與渲染到紋理/渲染緩衝區擴展有關?我一直在調試像瘋了一樣,找不到任何應該導致這樣的失敗。整個計劃過於龐大而複雜,無法在此發佈。它使用的是luagl,它只是OpenGL API和SDL的薄包裝。報告的版本是:2.1 Mesa 7.10.2

回答

1

如果沒有活動的OpenGL上下文,glColor將導致錯誤。如果您使用多個上下文或glBindFramebuffer,請檢查是否始終切換有效的切換。另請注意,使用來自多個線程的OpenGL調用需要special attention

+0

OpenGL上下文可以在上下文之間移動。 OpenGL上下文對創建線程沒有限制。您只需解除綁定並重新綁定上下文遷移。 – datenwolf 2012-04-10 14:08:49

+0

@datenwolf謝謝,編輯我的答案。 – 2012-04-10 14:20:59

+0

我沒有這樣做,但有可能我失去了我的GL環境嗎? – Rena 2012-04-11 01:29:29