qt OpenGL拾取会有位移差

如题所述

程序中使用了printf作为输出,但是其不能直接打印在Qt的应用程序输出窗口,需要进程结束后才会打印,可以使用qDebug来替代printf。在测试过程中,我遇到了无论点击屏幕哪里,都会将所有的对象选中的情况,查找一些资料对比试验后,提醒要注意gluLookAt、gluPerspective的调用位置。1. Opengl中的渲染模式有三种:(1)渲染模式,默认的模式;(2)选择模式, (3)反馈模式。如下
GLint glRenderMode(GLenum mode)
mode可以选取以下三种模式之一:绘制模式(GL_RENDER),选择模式(GL_SELECT),反馈模式(GL_FEEDBACK)。
  函数的返回值可以确定选择模式下的命中次数或反馈模式下的图元数量。
2. OpenGL进行图形编程的时候,通常要用鼠标进行交互操作,比如用鼠标点选择画面中的物体,我们称之为拾取(Picking).
  OpenGL中的拾取是对OpenGL图形管线的一个应用。所以OpenGL中的拾取并不是像D3D一样采用射线交叉测试来判断是否选中一个目标,而是在图形管线的投影变换(Projection Transformation)阶段利用拾取矩阵来实现的。
温馨提示:答案为网友推荐,仅供参考
相似回答