簡體   English   中英

2D Quads:在Android上使用OpenGL ES 2.0進行翻譯

[英]2D Quads : Translation with OpenGL ES 2.0 on Android

我有一個簡單的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 = vPosition * uMVPMatrix; to gl_Position = uMVPMatrix * vPosition; 解決了這個問題。

矩陣乘法是一種非交換操作 - 操作數的順序很重要!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM