2012-03-30 6 views
0

OpenGL을 사용하여 오브젝트를 배치하는 방법을 이해할 수 없습니다. 모든 변환 값은 "-1.0f"- "1.0f"사이에 있습니다. 나는 surfaceview를 사용하여 게임을 만들었습니다. 그리고 단순히 객체 x와 y의 위치를 ​​변경하고 정의 할 수 있습니다. 예; 안드로이드 화면 너비가 480 픽셀이라면 내 박스 최대 x 값은 480입니다.하지만 OpenGL에서 어떻게 할 수 있습니까? 한계를 설정하고 픽셀 또는 dpi 측정 항목을 사용하는 방법은 무엇입니까? 손가락 터치 장소에서 상자 위치를 어떻게 바꿀 수 있습니까?Android OpenGL es 변형 픽셀

답변

0

우선 끄기, glTranslate 및 대부분의 경우가 아닌 모든 변환 값은 "-1.0"에서 "1.0"사이의 값으로 제한되지 않습니다. 개체를 왼쪽 또는 오른쪽으로 10 픽셀 이동하면 변환 행렬을 올바르게 설정해야합니다. 다음은 OpenGL에서 제공하는 정점을 조작하는 순서입니다.

[(4 × 4) 투사] [(4 × 4)보기] [(4 × 4) 모델] * [(4 × 1) 정점]

당신은 아마 glOrtho (0.0, 폭 0.0을 사용할 것

, 높이, -1.0,1.0)를 사용하여 투영 행렬을 설정합니다. View 행렬을 항등 행렬로 남겨 둘 수 있습니다. 마지막으로 모델 매트릭스를 사용하여 객체를 픽셀 단위로 변환, 회전 및 크기 조절할 수 있습니다. 이제 모델 행렬의 glTranslatef (10.0,0.0,0.0)는 x 방향으로 객체를 10 픽셀 이동해야합니다. 또는 모델 행렬을 항등 행렬로 남겨두고 정점이 픽셀 좌표를 나타낼 수 있습니다.

당신은이 파워 포인트를 볼 수 있으며, 슬라이드 4에서는 정점에 무슨 일이 일어나고 있는지를 보여주는 멋진 그래픽을 볼 수 있습니다. https://wiki.engr.illinois.edu/download/attachments/195761441/OpenGL.pptx?version=1&modificationDate=1326820017000

+0

'GLOrtho (double, int, double, int, double, double) 메소드는 GL10' 타입의 glOrthof 또는 glOrthox' 타입에 대해 정의되지 않았습니까? – musa

+0

당신은 glOrthof 또는 glOrthox를 사용해야합니다. 나는 내 대답을 일반화하는 방법으로 glOrtho만을 사용했습니다. – MyReliableSchreck

0

OpenGL에서 항목의 위치를 ​​변경하려면 glTranslate을 사용하고 크기를 그리는 경우 언제든지 사용중인 사각형의 크기를 설정할 수 있지만 내가 아는 한 그 크기를 제한 할 수는 없습니다. 개체를 사용하지만 사각형/상자를 그리기 전에 사용자가 크기를 조정하려는 크기가 Android 장치 화면보다 큰지 확인하기 위해 몇 가지 검사를 수행 할 수 있습니다. 그렇다면 아무 것도하지 않습니다 (또는 사용자에게이를 알리는 축하를 표시 할 수 있습니다

는 또한이, relation between pixels and gl.gltranslatef(floatx,y,z)? 당신을 도울 수) 좀 더 큰하지만 내가 그것을 조금 인용 할 수 없습니다

로를 예를 들어 glTranslate를 할 때 특정 개체가 이동하는 거리 (픽셀 기준)는 에서부터 뷰어까지의 거리에 따라 달라집니다. 보는 사람에게서 멀어 질수록 더 좁은 픽셀 특정 옆이나 위/아래로 변환됩니다.

+0

예, glTranslate는 위치를 변경하지만 "1.0", "-1.0"사이의 값을가집니다. 10px로 이동하려면 어떻게해야합니까? 또는 내 터치 위치로 이동 개체? – musa