当我使用旋转矩阵在 openGL 中旋转我的正方形时,当我想围绕 X 或 Y 轴旋转它时,整个对象消失并拉伸。Z 轴工作正常。问题可能是什么?
我尝试在 DrawArrays 之前加载uniformMatrix4f,但它不起作用。仍然是同样的问题。翻译工作正常且可扩展。
渲染方法
public void render(Player model, Cube cube_model, StaticShader shader) {
GL30.glBindVertexArray(model.vaoID);
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);
shader.loadModelMatrix(Maths.createModelMatrix(new Vector3f(move_X,-Display.getHeight(),0f), 0f,0f,tilt_Y,1f));
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, 3);
GL20.glDisableVertexAttribArray(1);
GL20.glDisableVertexAttribArray(0);
GL30.glBindVertexArray(0);
GL30.glBindVertexArray(cube_model.vaoID);
GL20.glEnableVertexAttribArray(0);
GL20.glEnableVertexAttribArray(1);
shader.loadModelMatrix(Maths.createModelMatrix(new Vector3f(0f,Display.getHeight() - 200f,0f), 0f,increaseRotation,0f,0.5f));
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, 6);
increaseRotation += 1f;
GL20.glDisableVertexAttribArray(0);
GL20.glDisableVertexAttribArray(1);
GL30.glBindVertexArray(0);
}
矩阵数学:
public static Matrix4f createModelMatrix(Vector3f t, float rx, float ry, float rz, float s) {
Matrix4f modelMatrix = new Matrix4f();
modelMatrix.setIdentity();
Matrix4f.translate(t, modelMatrix, modelMatrix);
Matrix4f.rotate((float) Math.toRadians(rx), new Vector3f(1,0,0), modelMatrix, modelMatrix);
Matrix4f.rotate((float) Math.toRadians(ry), new Vector3f(0,1,0), modelMatrix, modelMatrix);
Matrix4f.rotate((float) Math.toRadians(rz), new Vector3f(0,0,1), modelMatrix, modelMatrix);
Matrix4f.scale(new Vector3f(s,s,s), modelMatrix, modelMatrix);
return modelMatrix;
}
我期望立方体正常地在 Y 轴上旋转到位,但它实际上正在旋转并消失,然后它的一条线在中间出现拉伸并消失。
青春有我
相关分类