2015-02-10 73 views
0

我创建了一个小型项目,该项目通过仿真器在Eclipse上工作。我试图在Moto G上运行它,但它不起作用。编辑读取getError两次,所以下面的语句是错误的 - “GLES20.glGetError()没有显示任何错误”,但logcat显示下方。OpenGl ES 2.0 - 程序未在Moto G上运行

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); 

你有什么想法吗?我在下面列入清单。

使用,功能的Android:glEsVersion = “0x00020000” 机器人:要求= “真”

最后一点是,我现在在Android Studio和gradle这个文件,而不是Eclipse中运行。这是因为后者更新了自己并且由于依赖关系而不再工作。

感谢您提前提供任何帮助。

马克

回答

0

这的确不是ES 2.0的有效电话:

GLES20.glEnable(GLES20.GL_TEXTURE_2D); 

启用纹理在旧版本ES所使用的固定管道(1.x中)和OpenGL是必要的。

随着可编程管道,这是ES 2.0及更高版本中唯一的选择,这是没有道理了。如果你想使用纹理,你可以在着色器中对纹理进行采样。如果你不想使用纹理,你...不。没有必要启用纹理。

您可以在man page上找到glEnable()的有效参数。

0

Eclipse停止工作,所以我尝试了Android Studio。我很确定这个程序正在使用Eclipse。我有一个这样的检查reqGlEsVersion> = 0x20000。在Android Studio上,这返回0,所以我的EGL上下文没有被创建。显然,这个价值和你设置的AVD有问题。一旦我评论这一点,这是好的。