2014-11-24 59 views
1

我試圖調試爲什麼我沒有看到一個新的對象(quad)被渲染,所以我使用了Xcode的「Capture GPU frame」功能。它通常工作正常,但現在它在glDrawElements期間在另一個呈現調用中給我EXC_BAD_ACCESSEXC_BAD_ACCESS當捕獲GPU幀時

請注意,它似乎類似於我見過的錯誤,與VBOs的混合使用有關,而不是。不過,我肯定解除綁定VBO使用後,和禁用頂點屬性陣列:

glBindBuffer(GL_ARRAY_BUFFER, 0); 
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); 

glDisableVertexAttribArray(posAttr); 
glDisableVertexAttribArray(texCoordAttr); 

(另外,請記住,使用「捕捉GPU禎」時,我只得到了碰撞,不是所有的時間)

我可能會做錯什麼?或者這可能是Xcode中的一個錯誤...?

+0

另外'glGetError()'是不是撿任何東西。 – 2014-11-24 19:32:25

+0

注意:我已經取消了VBOs作爲一個問題:我將我的繪圖代碼轉換爲不使用VBOs來完全確定。 – 2014-11-24 20:05:46

+0

我也修復了爲什麼我的原始四元組沒有被呈現的原因(我有一個大小參數爲零,所有頂點都在同一個地方)。但是,這並沒有解決崩潰問題。將仍然很好地追蹤它! – 2014-11-25 09:32:59

回答

0

這確實是由於一些GL狀態被遺留,特別是glVertexAttribPointer。我沒有理解它的原因是因爲它直接在3d引擎本身內部存在操作順序問題:在清除某個狀態之前,子對象正在被迭代(並呈現)。

(道歉,這是一個繁瑣具體項目的問題)