我创建了一个通过模拟器处理Eclipse的小项目。我试过在Moto G上运行它,但它不起作用。编辑读取getError两次,因此以下语句为false - " GLES20.glGetError()未显示任何错误"但是logcat正在显示下方。
W/Adreno-ES20﹕ <core_glUseProgram:1546>: GL_INVALID_OPERATION
W/Adreno-ES20﹕ <core_glGetAttribLocation:639>: GL_INVALID_OPERATION
W/Adreno-ES20﹕ <core_glGetAttribLocation:639>: GL_INVALID_OPERATION
有趣的是,使用步骤调试,下面的前两个没有显示上面的问题但是最后一个日志:GL_INVALID_ENUM?
GLES20.glEnable( GLES20.GL_CULL_FACE );
GLES20.glCullFace(GLES20.GL_BACK);
GLES20.glEnable(GLES20.GL_TEXTURE_2D);
你有什么想法吗?我在清单中列出了以下内容。
uses-feature android:glEsVersion =&#34; 0x00020000&#34;机器人:需要=&#34;真&#34;
最后一点是我现在在Android Studio上使用gradle文件而不是Eclipse运行。这是因为后者更新了自己,并且由于依赖性而不再工作。
感谢您提前提供任何帮助。
标记
答案 0 :(得分:0)
这确实不是ES 2.0中的有效调用:
GLES20.glEnable(GLES20.GL_TEXTURE_2D);
在旧版本的ES(1.x)和使用固定管道的OpenGL中,必须启用纹理。
使用可编程管道,这是ES 2.0及更高版本中的唯一选项,这已经没有意义了。如果要使用纹理,可以在着色器中对纹理进行采样。如果你不想使用纹理,你......不要。没有必要启用纹理。
您可以在man page上找到glEnable()
的有效参数。
答案 1 :(得分:0)
Eclipse停止工作,所以我尝试了Android Studio。我非常确定该程序正在使用Eclipse。我有一张像这样的支票reqGlEsVersion&gt; = 0x20000。在Android Studio上,这返回0,所以我的EGL上下文没有被创建。显然,这个的价值和AVD设置的问题是有问题的。一旦我评论出来就没关系。