2013-10-30 69 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调用查看正在传递什么样的价值观。

祝你好运!