0
對於3D採摘我打算這樣做:OPEN GL ES 1.0。世界座標到屏幕座標
- 獲得觸摸座標(X,Y)
- 選擇頂點,從我的模型的頂點緩衝(XM,YM,ZM) 。屏幕COORDS
- 然後通過項目我自己動手(XM,YM,ZM)
(XM,YM,ZM)--->(XP,YP,...)
然後檢查匹配(例如SQRT((X - XP)^ 2 +(Y - YP)^ 2)< SOME_EPS)
對於突出我在保存截錐矩陣mProjectionMatrix:
gl.glFrustumf(-ratio/q, ratio/q, -1/q, 1/q, 1, 25);
Matrix.frustumM(mProjectionMatrix, 0, -ratio/q, ratio/q, -1/q, 1/q, 1, 25);
,並保存變換座標mAccRotation:
gl.glLoadMatrixf(mAccRotation, 0);
所以測試功能變成了這樣: (TESTIFY_VERT是在我的模型的人之一)
public void touch(float x, float y){
float TESTIFY_VERT[] = {0.0f, 0.0f, -1.5f, 1.0f}; //first vert in L0
float Resulted[] = new float[4];
float rMatrix[] = new float[16];
Matrix.multiplyMM(rMatrix, 0, mProjectionMatrix, 0, mAccRotation, 0);
Matrix.multiplyMV(Resulted, 0, rMatrix, 0, TESTIFY_VERT, 0);
}
所以我試圖用(xP,yP)結果[0],結果[1]
並試圖使用(Resulted [0] + 1)*(WIDTH/2.0f),(--Results [1] + 1)*(HEIGHT/2.0f)
而這不起作用。爲什麼? 你能給個建議嗎?
PS我已經看過所有這樣的問題,他們不回答我的問題。
的提示,我掙扎在一個類似的問題。謝謝先生,你救了我的一天:) – redobot