将屏幕像素映射到openGL坐标

时间:2014-06-12 22:49:56

标签: c++ opengl

我正在尝试将屏幕像素映射到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(); 
}

0 个答案:

没有答案