第一个程序-绘制三角形(二)

     在上一章我们创建了几个 Filament 对象:

    private void setupFilament() {
        mEngine = Engine.create();
        mRenderer = mEngine.createRenderer();
        mView = mEngine.createView();
        mScene = mEngine.createScene();
        mCamera = mEngine.createCamera(mEngine.getEntityManager().create());
    }

    本章我们去学习如何使用这些对象。我们首先为 mScene 对象设置天空盒:

        Skybox skybox = new Skybox.Builder().color(0.0f, 0.0f, 0.0f, 1.0f).build(mEngine);
        mScene.setSkybox(skybox);

    什么是天空盒呢? 简单来说 天空盒就是一个巨大的立方体,它有六个面,如果需要,我们可

以为每个面设置不同的纹理,可以模拟星空,天空,白云,宇宙等。这里,我们为了简单,仅仅

将天空盒都设置为黑色背景。天空盒的目的就是为了设置环境。

    将 mScene 和 mCamera 设置到 mView对象中:

        mView.setScene(mScene);
        mView.setCamera(mCamera);

   为View 设置 Scene 是为了能展示场景中的物体,为 View 设置 Camera 是为了能从不同的角度

观察物体。

   接下来,我们设置相机投影矩阵,投影分为正射投影和透视投影:

    public enum Projection {
        /** Perspective projection, objects get smaller as they are farther.  */
        PERSPECTIVE,
        /** Orthonormal projection, preserves distances. */
        ORTHO
    }

  由于我们是绘制一个简单的三角形,使用 ORTHO 就行:

        @Override
        public void onResized(int width, int height) {
            float zoom = 1.5f;
            float aspect = (float)width / (float)height;
            mCamera.setProjection(Camera.Projection.ORTHO,
                    -aspect * zoom, aspect * zoom, -zoom, zoom, 0.0, 10.0)

            mView.setViewport(new Viewport(0, 0, width, height));
        }

   我们看到在为相机设置投影之后,我们也同时设置了 View 的视口信息。因为 这里有相关的

回掉信息 也就是 Surface 的宽高信息,我们也可以不在这里设置,可以将宽高保存起来,在

别处设置也可以。

   到目前为止我们将 Camera,View 做了简单设置,如果要要渲染具体物体,主要还是配置

Scene。将我们需要渲染的entity 实体 加入到 Scene  中,在 draw 到时候就可以将物体渲染

出来&#

猜你喜欢

转载自blog.csdn.net/jake9602/article/details/128824110
今日推荐