【问题标题】:OpenGL ES 2.0 X-Axis is Flipped?OpenGL ES 2.0 X 轴翻转?
【发布时间】:2012-08-05 18:27:49
【问题描述】:

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

这是我的顶点 - 索引和纹理坐标,我真的不必显示。

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

为什么它会被“向后”绘制。我还认为我的相机可能在物体后面,所以如果我在物体后面,那么在 3 维空间中剩下的就是正数。

【问题讨论】:

  • 我假设你的意思是 X 坐标? (横轴)。

标签: java opengl-es opengl-es-2.0


【解决方案1】:

您确实是从反面看对象。

您的 lookAt 函数将眼睛放置在 (0,0,-3) 处,并将 lookAt 点放置在 (0, 0, 0) 处。默认情况下,负 z 轴指向屏幕,但您从相反方向(朝向正 z 轴)查看它。

您应该将眼睛注视 (0,0,3) 并朝 (0,0,0) 方向看,以获得您期望的视图。

您可能会发现红皮书的this chapter 信息丰富。

【讨论】:

  • 感谢您的回答。我是openGL的新手,我遇到了同样的问题。我已经寻找了几个小时来解决它。您的解释非常清楚并解决了问题。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多