0
我知道,歸一化座標應該是-1(左)和+1(右)和1(底部)和+1(上)應用正交投影或平截頭體影響標準化座標?
這樣的:
但經過應用此:
從我onSurfaceChanged方法
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width/height;
Matrix.orthoM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
//The above line can be replaced with:
//Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
//But I get the same results with either frustumM or otrhoM
而這在我的onDrawFrame方法
Matrix.setLookAtM(mVMatrix, 0, 0, 0, 3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);
(然後我通過mMVPMatrix到我的自定義類的抽籤方法,在那裏旋轉和平移)。
但是,我的座標似乎改變 - 這大約發生了什麼:
正如你所看到的,X座標都有些改變,-1和+1沒有更長的屏幕邊緣(我現在使用的設備上,外邊緣變爲-1.7和+1.7)
Y座標保持不變。
如果有人能指出我要出錯的地方,會很感激嗎?我需要它應該是-1到+1。
謝謝
嗯,是啊我明白你的意思了,我寫了一個四色渲染方法,你通過座標(如drawQuad(x,y)),其中x和y被指定爲'普通'屏幕座標在左上角0,0)。該方法然後轉換這些以便它們可以被繪製。但是,自從應用投影后,如果我指定0,0,它不會在左上角畫出來,如果你看到我的意思,所以我試圖理解爲了解決這個問題。基本上,如果我將0指定爲X座標,那麼我需要渲染方法以某種方式將其解釋爲屏幕的左側。除非有更簡單的方法去做..... – Zippy 2013-04-07 10:23:28
感謝您的答案,但它解釋得很好。我會問另一個關於開發不同資源/比率的問題。我習慣於通過基於屏幕寬度和高度來縮放我的精靈來開發它們,因此它們相對於任何屏幕顯示相同的大小。 (即無論遊戲運行的屏幕分辨率或屏幕比例如何,遊戲的尺寸都是相同的) - 但我看到人們在更寬的屏幕上展示了「在遊戲區域展示更多內容」,這是我正在尋找的一個概念很難把握。 – Zippy 2013-04-07 10:27:51