Android上的OpenGL问题(Galaxy S3) -没有为官方教程绘制多边形



我通过遵循官方Android教程:http://developer.android.com/training/graphics/opengl/index.html开始使用OpenGL 2.0。基本上,我可以对我的游戏进行复制和粘贴,只使用几个彩色多边形:https://play.google.com/store/apps/details?id=de.timedout.mosaic.app

我在几个设备上测试了这款游戏,它是有效的。然而,我也刚刚在三星Galaxy S3 (Android 4.1.2)上测试了它,它只显示背景而没有多边形。但是,我没有得到任何错误消息。好吧,所以我回到了官方教程,并在Galaxy S3上测试了OpenGL 1.0和OpenGL 2.0的代码,结果是一样的:它绘制了背景,但没有多边形!与此同时,市场上的其他OpenGL基准测试在该设备上运行良好。这是否意味着来自教程的官方代码确实存在一些缺陷?-我是一个完全的OpenGL初学者,有人有这个问题的提示给我吗?

好的,我找到原因了。这些形状位于z=0.0f平面上。

static float triangleCoords[] = {   // in counterclockwise order:
         0.0f,  0.622008459f, 0.0f, // top
        -0.5f, -0.311004243f, 0.0f, // bottom left
         0.5f, -0.311004243f, 0.0f  // bottom right
};

摄像机定义为:

Matrix.setLookAtM(mViewMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

我知道相机和多边形在同一个z=0.0f平面上。在某些设备上,它可以显示对象,但在Galaxy S3上,GPU显然不会显示它们。

一个简单的解决方案是将相机稍微向后移动或将物体移到前景。我选择稍微移动对象:

static float triangleCoords[] = {   // in counterclockwise order:
         0.0f,  0.622008459f, 0.00001f, // top
        -0.5f, -0.311004243f, 0.00001f, // bottom left
         0.5f, -0.311004243f, 0.00001f  // bottom right
};

现在它在我所有的设备上都很好用。

相关内容

最新更新