Game !





마우스 클릭한 위치로 도형을 이동시키거나 다시 그릴 때,


윈도우(디바이스) 좌표랑 OpenGL 좌표랑 달라서


값이 전혀 이상하게 들어가는 경우가 있다.



이런 경우, 윈도우 좌표를 OpenGL 좌표로 맞춰보자





*윈도우 좌표계



*OpenGL 좌표계


출처:soen





윈도우 클라이언트 창의 max 값 변수 winWidth, winHeight 변수가 있다고 가정할 때,


void convertDeviceXYOpenGLXY(int x, int y, float* ox, float* oy)

/* x,y : 윈도우 마우스 좌표 변수 , ox, oy : Open GL 좌표로 변환 후 저장할 변수 */

{

int w = winWidth;

int h = winHeight;

*ox = (float)(x - (float)w / 2.0)*(float)(1.0 / (float)(w / 2.0)));

*oy = -(float)(y - (float)h / 2.0)*(float)(1.0 / (float)(h / 2.0)));

}



cf. 변수가 전역변수일 경우에는 따로 매개변수로 함수를 지정할 필요가 없다.





출처 http://mtsparrow.blogspot.kr/2013/04/opengl.html