C++ Qt/OpenGL-渲染的基本体被扭曲
我在youtube上学习如何在Qt中使用OpenGL的教程。我有两门课: glWidget->从QGLWidget继承; GLWindow->从QMainWindow继承并具有一个表单 在GLWindow的表单中,我放置了一个小部件,并将其升级为glWidget,以便通过GLWindow上的小部件显示在glWidget上呈现的内容 我在glWidget中实现了以下继承函数:C++ Qt/OpenGL-渲染的基本体被扭曲,c++,qt,opengl,user-interface,opengl-es,C++,Qt,Opengl,User Interface,Opengl Es,我在youtube上学习如何在Qt中使用OpenGL的教程。我有两门课: glWidget->从QGLWidget继承; GLWindow->从QMainWindow继承并具有一个表单 在GLWindow的表单中,我放置了一个小部件,并将其升级为glWidget,以便通过GLWindow上的小部件显示在glWidget上呈现的内容 我在glWidget中实现了以下继承函数: void glWidget::initializeGL() { glClearColor(0.1, 0.1, 0.
void glWidget::initializeGL()
{
glClearColor(0.1, 0.1, 0.1, 1.0);
}
void glWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(0.2, 0.8, 0.1);
glVertex3f(-0.5, -0.5, 0.0);
glColor3f(0.8, 0.3, 0.9);
glVertex3f(0.5, -0.5, 0.0);
glColor3f(0.1, 0.1, 0.5);
glVertex3f(0.0, 0.5, 0.0);
glEnd();
}
我计划稍后使用着色器和缓冲区,但我不明白为什么渲染的基本体显示为这样:
看起来三角形是在世界空间而不是局部空间中变换的。如果它在局部空间,那么三角形将出现在屏幕的中心。我所指的教程可以在这里找到:
我不知道我做错了什么。起初我认为这与我的顶点有关,我知道这是即时模式,应该尝试使用缓冲区/着色器;但我还是想知道我做错了什么。为什么三角形没有按照教程中的显示进行渲染?我应该在glWidget的构造函数中传递什么还是什么?扩展QGLWidget时,请记住resizeGL()将自动调用: resizeGL()-设置OpenGL视口、投影等。每当小部件调整大小时(以及首次显示时,因为所有新创建的小部件都会自动获得调整大小事件),都会调用该小部件 在您的情况下,小部件似乎会自动调整大小,因此解决方案是覆盖它并让它为空
扩展QGLWidget时,通常也是覆盖resizeGL函数的好方法。您是否实现了resizeGL并将其保留为空?谢谢,它现在呈现良好!好的,我会给未来的读者一个答案。