【发布时间】:2016-09-04 03:38:57
【问题描述】:
好的,这是我第四次发布此问题。这是一个复杂的问题,我知道。
我会解释所有的,因为我不知道什么是重要的或不重要的,而且这个问题看起来像是代码中的一些愚蠢的东西,我没有意识到。
我一直在用 c++ NDK 中的渲染部分为 Android 开发游戏引擎,几天前,我对此没有任何问题,我可以在任何 android 设备上正确看到我的游戏,然后,我编写了更多代码,更新了Android Studio 从 1.5.2 到 2.1.3,将实验性 gradle 插件从 0.7.0 更新到 0.7.3,一直以来我只在 Nexus 6p 和 android 6 上测试了该应用程序,一切都很好,但是,哦,哦,当我在 Android 4 上测试它时,它什么也没显示,当我在 Android 5 上测试时,它显示了一些东西,但没有正确显示。
现在,我开始调试应用程序,我注意到当我使用 VBO 绘制时,渲染已损坏并且没有渲染任何内容,只有背景以我在 glClearColor 中设置的颜色显示。
所以当我绘制一个没有 VBO 的三角形时,它会正确渲染,但是如果我用 VBO 绘制相同的三角形甚至是另一个三角形,当我绘制一个没有 VBO 的三角形时,渲染会崩溃并且只显示背景,然后我用VBO画了另外一个,我注意到不管我调用glDrawElements,只要代码到达glBindBuffer,渲染器就会崩溃。
就是这样,我已经试过了:
- 返回 Android Studio 1.5.2
- 降级实验插件
- 将 gradle 从 2.14.1 降级到 2.10
- 我检查了所有 GLerrors,每次调用 gl,都返回 0。
- 我什至开始从头开始编写所有代码(只是 c++ 代码),我得到了 结果一样
这快把我逼疯了。我在这上面浪费了 5 天时间,时间越长,我就觉得自己越笨。
这些是我的文件:
我希望我能解决这个问题,并为这么微不足道的问题感到愚蠢。
如果有任何想法或帮助,我将不胜感激,谢谢
编辑: 问题可能不在代码中,可能在 gradle 设置中,或者在清单中,或者在 java 渲染器部分中,或者在任何地方,但我找不到在哪里
【问题讨论】:
-
你看过堆栈跟踪吗?它真的会在
glBindBuffer()中崩溃吗? -
@reto 问题是堆栈跟踪没有显示任何东西,因为应用程序没有崩溃,代码继续运行,但使之前的所有入口无效
标签: android c++ opengl-es android-ndk opengl-es-2.0