OpenGL ES 2.0 X轴翻转了吗?

4

我开始绘制我的四边形,但当我开始玩顶点时,我注意到X坐标被翻转了。这是一个图片来说明我的意思:

enter image description here

这是我的顶点-索引和纹理坐标,我不需要展示。

static final int COORDS_PER_VERTEX = 3;
static float positionCoords[] = { 
    -0.5f,  0.5f, 0.0f,   // top left
    -0.5f, -0.5f, 0.0f,   // bottom left
     0.5f, -0.5f, 0.0f,   // bottom right
     0.5f,  0.5f, 0.0f }; // top right

static final int COORDS_PER_TEXTURE = 2;
static float textureCoords[] = { 
    0.0f, 0.0f, 
    0.0f, 1.0f,
    1.0f, 1.0f,
    1.0f, 0.0f, };

private final short indices[] = { 0, 1, 2 };

这是我更改投影矩阵和视图矩阵的地方。

public void onSurfaceChanged(GL10 naGl, int width, int height)
{
        Log.d(TAG, "GL Surface Changed - Setting Up View");

    GLES20.glViewport(0, 0, width, height);

    float ratio = (float) width / height;

    Matrix.frustumM(ProjectionMatrix, 0, -ratio, ratio, -1, 1, 3, 7);

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

为什么会画“反向”。我还以为我的相机可能在物体后面,所以在三维空间中,如果我在物体后面,左侧就是正的。


我猜你是指X坐标吧?(水平轴)。 - Tim
1个回答

6
你确实是从反面看这个对象。
你的lookAt函数将眼睛放置在(0,0,-3),并将观察点放置在(0,0,0)。默认情况下,负z轴指向屏幕内部,但你正在从相反方向(朝向正z轴)观察它。
为了获得您期望的视图,您应该将眼睛放在(0,0,3),朝向(0,0,0)。
您可能会发现《Red Book》的此章节有益。

谢谢你的回答。我是openGL的新手,也遇到了同样的问题。我已经花了几个小时来寻找解决方法。你的解释非常清晰,并且解决了我的问题。谢谢。 - Ashbay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接