2013-10-30 68 views
0

我移植一個遊戲引擎,在不同的平臺(Windows,iOS版,劇本,BB10,Android的)完美地工作,以氯化鈉氯化鈉GL錯誤:GL_INVALID_OPERATION

2D正確呈現,但一些3D對象不顯示或有呈現真奇怪,我得到以下con

[.PPAPIContext]GL ERROR :GL_INVALID_FRAMEBUFFER_OPERATION : BackTexture::AllocateStorage: <- error from previous GL command (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: stride not valid for type (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: offset not valid for type (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 0 (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: stride not valid for type (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: offset not valid for type (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: stride not valid for type (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: offset not valid for type (index):1 
[.PPAPIContext]GL ERROR :GL_INVALID_OPERATION : glVertexAttribPointer: stride not valid for type 

它重複無限期。

再一次,相同的渲染代碼用於不同的平臺,它工作得很好。在移植到NaCl時是否需要考慮特殊的考慮因素?關於我應該關注什麼以尋找問題的任何想法? 據我所知,着色器0(頂點着色器)有一個問題,實際上一些對象的頂點都在這個地方。

謝謝! :)

+0

您可能會遇到平臺的內部數據類型與GL typedefs大小不同的情況。例如,'GLushort'保證**總是**爲16位,而C中的'unsigned short'不是。如果您列出了用於調用'glVertexAttribPointer(...)'等的代碼,這將有所幫助。 –

回答

2

出於安全原因,Chrome會驗證其他驅動程序可能無法執行的許多GL操作。這是一項工作,但您可以嘗試使用http://cs.chromium.org搜索Chromium代碼庫來查找錯誤消息。

這裏是我的發現:

要調試這一點,我會縮小到glDrawElementsglVertexAttribPointer的調用,並試圖找到其中的一個出現故障,那麼我會加入一些printf調用查看正在傳遞什麼樣的價值觀。

祝你好運!