【问题标题】:OpenGL problems on Android (Galaxy S3) - not drawing polygons for official tutorialAndroid (Galaxy S3) 上的 OpenGL 问题 - 官方教程不绘制多边形
【发布时间】:2014-07-05 01:42:42
【问题描述】:

我按照官方 Android 教程开始使用 OpenGL 2.0:http://developer.android.com/training/graphics/opengl/index.html。基本上,我可以对只使用几个彩色多边形的游戏进行复制和粘贴: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 初学者,有没有人给我提示一下这个问题?

【问题讨论】:

    标签: android opengl-es galaxy


    【解决方案1】:

    好的,我找到了原因。形状位于 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
    };
    

    现在它在我所有的设备上都像一个魅力。我希望这可以帮助任何有同样问题的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 2018-09-29
      • 2011-06-26
      • 2023-03-27
      • 1970-01-01
      • 2012-04-18
      相关资源
      最近更新 更多