1

我在 x 轴上将立方体旋转 90 度,之后我想在 y 轴上再旋转 90 度,但它确实得到了预期的(来自我的)结果,因为它在我希望旋转发生之前旋转了让我们说在世界坐标中......我认为我当前的代码正在重置单位矩阵,但如果我删除该行,则不会呈现任何内容。这是我的代码:

public void onDrawFrame(GL10 arg0) {
//      GLES20.glEnable(GLES20.GL_TEXTURE_CUBE_MAP);
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
        GLES20.glUseProgram(iProgId);

    cubeBuffer.position(0);
    GLES20.glVertexAttribPointer(iPosition, 3, GLES20.GL_FLOAT, false, 0, cubeBuffer);
    GLES20.glEnableVertexAttribArray(iPosition);

    texBuffer.position(0);
    GLES20.glVertexAttribPointer(iTexCoords, 3, GLES20.GL_FLOAT, false, 0, texBuffer);
    GLES20.glEnableVertexAttribArray(iTexCoords);

    GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
    GLES20.glBindTexture(GLES20.GL_TEXTURE_CUBE_MAP, iTexId);
    GLES20.glUniform1i(iTexLoc, 0);


    Matrix.setIdentityM(m_fIdentity, 0);


    if(rotating == true)
    {
        rotate();
    }

    Matrix.rotateM(m_fIdentity, 0, -xAngle, 0, 1, 0);
    Matrix.rotateM(m_fIdentity, 0, -yAngle, 1, 0, 0);

    Matrix.multiplyMM(m_fVPMatrix, 0, m_fViewMatrix, 0, m_fIdentity, 0);
    Matrix.multiplyMM(m_fVPMatrix, 0, m_fProjMatrix, 0, m_fVPMatrix, 0);

// Matrix.translateM(m_fVPMatrix, 0, 0, 0, 1); GLES20.glUniformMatrix4fv(iVPMatrix, 1, false, m_fVPMatrix, 0);

    GLES20.glDrawElements(GLES20.GL_TRIANGLES, 36, GLES20.GL_UNSIGNED_SHORT, indexBuffer);

// GLES20.glDisable(GLES20.GL_TEXTURE_CUBE_MAP); }

4

0 回答 0