【发布时间】:2015-09-01 07:56:15
【问题描述】:
我想在 android Studio 中使用 opengl 绘制一个更复杂的对象。 我有一个网格。所有顶点法线和索引都是正确的。
但是当我使用此功能GLES20.glDrawElements(mode, count, type, indices) 时,我遇到的问题是,例如当计数为 1661 或更高时,应用程序会中断。但是当计数为 1381 或更低时,它可以正常工作(除了我的对象看起来错误的事实)。
我认为这可能有两个可能的原因。首先,这个数字太高了,并且该方法对它可以绘制的对象数量有限制。(但我还没有找到任何关于它的信息,我不认为 1700 是这么多的索引!)
另一种可能性是我以某种方式定义了 openGl 绘制的框架或空间错误。我正在使用 Vuforia,并且正在使用 Vuforia 示例项目。当我输入一个小的计数数字并且opengl实际上绘制了一些东西时,它都在图像目标的一小块区域中。但由于我使用的是示例,所以我不知道你会在哪里定义类似的东西。
如果有人有想法,我真的很感激!
编辑: 这就是 Logcat 中发生的事情:
D/libEGL:glDrawElements(GL_TRIANGLES, 1661, GL_UNSIGNED_SHORT, (const void *) 0x899e56d0);
A/libc:致命信号 11 (SIGSEGV),代码 2,tid 65432 (GLThread 8537) 中的故障地址 0xe34s5654
E/BufferQueueProducer:[unnamed-] dequeueBuffer: min unqueued buffer count (2) exceeded (dequeued=7 unqueued=1)
比上一次报告重复了几次...
【问题讨论】:
-
glDrawElements()调用期间可以使用的索引范围取决于绘制调用时所有启用的顶点属性数组中的提供的实际数组数据 .对我来说,这似乎只是索引不存在的顶点。 -
@derhass 感谢您的评论!对其进行了测试,但最高索引永远不会高于我的顶点数组/3 -1 的长度。所以每个索引的顶点应该存在。
标签: java opengl android-studio