2016-11-07 10 views
0

을 조정 :OPEN GL ES 1.0. 세계는 화면 좌표 나는이 할 계획 차원 따기 위해

저리 터치 좌표 (x, y)

-Choose 정점 내 모델의 버텍스 버퍼 (XM, YM, ZM)에서 . 화면 좌표에 대한 내 자신의 손 (XM, YM, ZM)에 의해

- 그럼 프로젝트

(XM, YM, ZM) ---> (XP, YP, ...)

하고 확인 매치 (실시 예 SQRT 대 ((X - xP를)^2 + (Y - YP)^2) < SOME_EPS) I는 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); 

그래서 테스트 기능이로 바뀌 :

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); 
} 

(TESTIFY_VERT 내 모델들 중 하나입니다) 그래서 내가 사용하려고 결과 : [0] (xP, yP)

으로 결과가 (결과 [0] +1) * (너비/2.0f), (결과 * 1) * (높이/2.0f)

그리고 이것은 작동하지 않습니다. 왜? 조언을 제공 할 수 있습니까?

추신 : 나는 이러한 모든 질문을 보았으며 내 문제에 답하지 않습니다.

답변

1

어쩌면 관점 분할이 누락되었을 수 있습니다. 분할 생성 하였다 [0], [1] 의해이 결과 결과 [3](XP, YP) ​​ 예로서 비를 사용 팁을위한

float xP = Resulted[0]/Resulted[3]; 
float yP = Resulted[1]/Resulted[3]; 
+0

, I는 A의 고투 비슷한 문제. 고마워요. 오늘 하루 구 했어요. :) – redobot