所以我試圖呈現兩個移動的四邊形,每個都在不同的位置。我的着色器儘可能簡單(頂點僅由模型視圖投影矩陣轉換,只有一種顏色)。OpenGL ES 2.0(Android)中的2D渲染(特別是矩陣)
每當我嘗試渲染一些東西時,我最終只會看到一些顏色!我只在OpenGL中完成3D渲染的工作,所以我遇到了2D問題。
這裏是我的基本的渲染循環,簡化了一下(我使用android.opengl.Matrix
和program
提供的矩陣操作方法是我創建的只是調用GLES20.glUniformMatrix4fv()
自定義類):
Matrix.orthoM(projection, 0, 0, windowWidth, 0, windowHeight, -1, 1);
program.setUniformMatrix4f("Projection", projection);
在這一點上,我渲染四邊形(這是每個四重複):
Matrix.setIdentityM(modelview, 0);
Matrix.translateM(modelview, 0, quadX, quadY, 0);
program.setUniformMatrix4f("ModelView", modelview);
quad.render(); // calls glDrawArrays
和我看到的全部是每個四邊形的顏色的條子!我在這裏結束了智慧,我嘗試了所有我能想到的事情,而且我正在尖叫着我的電腦,並在整個房間裏甩手機。任何人都有指點?我使用ortho錯誤嗎?我100%肯定我正在渲染Z值爲0的所有東西。我嘗試使用frustumM
而不是orthoM
,這使得我可以看到四邊形,但是隻要它們移動就會完全傾斜,這很有意義如果我正確理解平截頭體的工作方式(無論如何,它對3D渲染更爲重要)。
如果這有什麼差別,我定義我的視口
GLES20.glViewport(0, 0, windowWidth, windowHeight);
凡windowWidth
和windowHeight
是被pased到orthoM相同的價值觀
編輯:這可能是值得一提的是, android.opengl.Matrix
方法將偏移量作爲第二個參數,以便可以將多個矩陣推入一個數組中,以便第一個0
用於
另一個編輯:供參考,這是我的頂點着色器代碼:
uniform mat4 ModelView;
uniform mat4 Projection;
attribute vec4 vPosition;
void main() {
mat4 mvp = Projection * ModelView;
gl_Position = vPosition * mvp;
}
另一個編輯:我試着換Projection * ModelView
與ModelView * Projection
,但現在我只是得到了一些非常時髦的好看的圖形...
以供將來參考,請不要交叉後(或至少是記下它在你的問題,所以你不要浪費我們的時間)。 HTTP://meta.stackexchange。COM /問題/ 64068 /是交叉張貼-A-問題上,多個堆疊交換站點許可-IF-的衢 – Tim 2012-07-07 23:41:57