0
我C编程的一个台球游戏++使用Qt和OpenGL(更具体的,在QGLWidget来绘图)。我知道我在OpenGL的方式有点,但不是太多的专业人士。OpenGL窗口切断模型视图
我做了什么: 创建一个Qt应用程序窗口与Qt小部件(按钮,...)和一个QGLWidget(我自己的实现)。
问题: 我可以在这个窗口中画一个球并旋转它,等等,但视图的高宽比不正确+我似乎无法使用整个空间。
的白色矩形是公平的竞争环境(测量:1.4×2.7 float坐标)
我可以改变模型,但随后似乎切断了:只要我变换
该视图(下面查看功能)我的模型的一部分似乎被切断。
这是矩形(球这些坐标内绘制正确):
glBegin(GL_LINE_LOOP);
glColor3f(255.0, 255.0, 255.0);
glVertex3f(0.0, 0.0, 0.0);
glVertex3f(1.4, 0.0, 0.0);
glVertex3f(1.4, 0.0, 0.0);
glVertex3f(1.4, 2.7, 0.0);
glVertex3f(1.4, 2.7, 0.0);
glVertex3f(0.0, 2.7, 0.0);
glVertex3f(0.0, 2.7, 0.0);
glVertex3f(0.0, 0.0, 0.0);
glEnd();
OpenGL图像大小调整功能:
void GLWidget::resizeGL(int width, int height)
{
int side = qMin(width, height);
glViewport((width - side)/2, (height - side)/2, side, side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-0.05, +1.45, -0.05, +2.75, 0.0, 50.0);
//glFrustum(-0.05, +1.45, 0.0, 0.0, 0.0, 50.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
,最后,从渲染功能的部分相关视图:
gluLookAt(0.0, 0.0, 1.0, 0.0, -0.70, 0.0, 0.0, 1.0, 0.0); // This is the cut of part
//gluLookAt(0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); // Normal but weird rectangle
glScalef(1.0, 1.0, 1.0);
近和远平面都设置了“远”够了,那工作AFAIK。你有什么建议我改变他们? 我只是想显示表(左下坐标= 0,0,右上角坐标= 1.4,2.7),也许它可以在第一周围有一些空的空间,只是表..谢谢 – TheDudeAbides
显然,他们是不够远,因为你的场景片段。我会说近裁剪机是罪魁祸首。在正投影中,近夹平面的负值是完全可以接受的。 – datenwolf
设置不正确只有视口(保持正确的方面)更容易? – Luca