我正在尝试将屏幕像素映射到openGL坐标。基本上我有一个3D球体在位置Vector3f(0,0,0)绘制,半径= 1使用过剩。
glutSolidSphere(radius/*1*/,50,50);
此球体不是出现在屏幕中央,而是出现在屏幕的左上象限中。我的目标是将鼠标单击的位置转换为openGL坐标,以找出屏幕上点击的对象。我按照link这里使用公式计算openGL坐标
converted_x = 2.0f/screen_width*mouse_x - 1.0f
converted_y = 2.0f/screen_width*mouse_y - 1.0f
当我尝试点击球体的中心时,我得到点击位置(converted_x,converted_y)为(-0.62185,-0.607500),即像素位置(mouse_x,mouse_y)为(242,157)。我的屏幕分辨率是1280 * 800。 我无法确定如何使用此信息来确定点击了球体。非常感谢任何帮助。
目前这是reshape()中的代码,取自现有项目。
void reshape(int w, int h)
{
// Adjust the viewport if the user resizes the window
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (h==0)
gluPerspective(80,(float)w,1.0,5000.0);
else
gluPerspective (80,( float )w /( float )h,1.0,5000.0 );
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}