16,213
社区成员
发帖
与我相关
我的任务
分享
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QGLWidget>
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);
virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
};
#endif // GLWIDGET_H
#include "glwidget.h"
#include <gl/glut.h>
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{}
void GLWidget::initializeGL()
{
qglClearColor(Qt::gray);
glShadeModel(GL_SMOOTH);
glClearColor(0.6, 0.2, 0.2, 1);
}
void GLWidget::resizeGL(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLfloat x = GLfloat(w) / h;
glFrustum(-x, +x, -1.0, +1.0, 4.0, 20.0);
glMatrixMode(GL_MODELVIEW);
}
void GLWidget::paintGL()
{
//qglClearColor(QColor(0,0,255,128));
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0,1.0,0.0);
glVertex3f(-1.0,-1.0,0.0);
glVertex3f(1.0,-1.0,0.0);
glEnd();
}
#include <QApplication>
#include <QtOpenGL/QtOpenGL>
#include "glwidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
GLWidget *gl = new GLWidget();
gl->updateGL();
gl->show();
return a.exec();
}
glTranslatef(0.0f, 0.0f, -8.0f);
好好理解下这段代码的意思glFrustum(-x, +x, -1.0, +1.0, 4.0, 20.0);