gpt4 book ai didi

android - Android 上的二维四边形 : Translation with OpenGL ES 2. 0

转载 作者:太空狗 更新时间:2023-10-29 13:34:57 25 4
gpt4 key购买 nike

我有一个简单的 2D 引擎,可以渲染 2D 纹理四边形,现在我可以缩放四边形或旋转它,但是当我尝试平移它时,我有一个奇怪的失真(四边形在图像的左半部分被压扁了)具有无限透视效果的屏幕),代码如下:

private final float quad_vertex[] = {
-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
};

final float left = -width/2.0f;
final float right = width/2.0f;
final float bottom = -height/2.0f;
final float top = height/2.0f;
final float near = 0.1f;
final float far = 200.0f;

Matrix.orthoM(projection_matrix, 0, left, right, top, bottom, near, far);
Matrix.setLookAtM(view_matrix, 0, 0, 0, 1.0f, 0.0f, 0f, 0f, 0f, 1.0f, 0.0f);

...

Matrix.setIdentityM(model_matrix, 0);

Matrix.scaleM(model_matrix, 0, scale_width, scale_height, 1.0f);
Matrix.translateM(model_matrix, 0, x, 0, 0);
//Matrix.rotateM(model_matrix, 0, x, 1, 0, 0);
x = x + 1.0f;

Matrix.multiplyMM(viewprojection_matrix, 0, projection_matrix, 0, view_matrix, 0);
Matrix.multiplyMM(modelviewprojection_matrix, 0, viewprojection_matrix, 0, model_matrix, 0);

那么,知道问题出在哪里吗?提前致谢:)

最佳答案

听起来像我遇到的类似问题。我在 http://developer.android.com/training/graphics/opengl/index.html 使用教程代码.将着色器代码中的一行从 gl_Position = vPosition * uMVPMatrix; 更改为 gl_Position = uMVPMatrix * vPosition; 解决了这个问题。

矩阵乘法是一种非交换运算 - 操作数的顺序很重要!

关于android - Android 上的二维四边形 : Translation with OpenGL ES 2. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com