Qt中创建OpenGL基本框架
来源:互联网 发布:网络服务商 编辑:程序博客网 时间:2024/06/05 05:04
1、创建Qt设计界面类
2、在.pro文件中加入opengl,以及加入需要用到的Libs
QT += core gui openglLIBS += -lglut -lglu32 -lopengl32
3、修改Widget的父类继承QGLWidget,并导入QGLWidget虚函数initializeGL( )、resizeGL( )、paintGL( )。如有需要其它函数根据实际情况继续导入。
widget.h代码如下:
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtOpenGL/QGLWidget>namespace Ui {class Widget;}class Widget : public QGLWidget{ Q_OBJECTpublic: explicit Widget(QGLWidget *parent = 0); ~Widget();private: Ui::Widget *ui; // QGLWidget interfaceprotected: void initializeGL(); void resizeGL(int w, int h); void paintGL();};#endif // WIDGET_H
4、在.cpp文件中实现虚函数
widget.cpp文件如下:
#include "widget.h"#include "ui_widget.h"#include "gl/glu.h" //gluPerspective()函数需要用到此头文件Widget::Widget(QGLWidget *parent) : QGLWidget(parent), ui(new Ui::Widget){ ui->setupUi(this);}Widget::~Widget(){ delete ui;}void Widget::initializeGL(){ setGeometry(300, 150, 640, 480); //设置窗口初始位置和大小 glShadeModel(GL_SMOOTH); //设置阴影平滑模式 glClearColor(1.0, 1.0, 1.0, 0); //改变窗口的背景颜色,不过我这里貌似设置后并没有什么效果 glClearDepth(1.0); //设置深度缓存 glEnable(GL_DEPTH_TEST); //允许深度测试 glDepthFunc(GL_LEQUAL); //设置深度测试类型 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //进行透视校正 glEnable(GL_BLEND); //打开混合 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); //设置颜色混合,用于透明}void Widget::resizeGL(int w, int h){ if(0 == h) h = 1; //防止一条边为0 glViewport(0, 0, (GLint)w, (GLint)h); //重置当前视口,本身不是重置窗口的,只不过是这里被Qt给封装好了 glMatrixMode(GL_PROJECTION); //选择投影矩阵 glLoadIdentity(); //重置选择好的投影矩阵 gluPerspective(45.0, (GLfloat)w/(GLfloat)h , 0, 1000.0f); //建立透视投影矩阵 glMatrixMode(GL_MODELVIEW); //以下2句和上面出现的解释一样 glLoadIdentity();}void Widget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslated(0,0,-5); //视角后移,不然看不到绘制的图形 glColor3f(0,0,0); //选取颜色为黑色 glBegin(GL_TRIANGLES); //绘制一个简单的三角形 glVertex2d(0,0); glVertex2d(1,1); glVertex2d(1,0); glEnd();}
绘制结果:
至此,简单的OpenGL框架就搭好了,关于OpenGL的相关知识请自行百度“NeHe”学习。
0 0
- Qt中创建OpenGL基本框架
- 基于Qt的OpenGL点云显示基本框架
- Qt OpenGL----创建openGL窗口
- Qt下OpenGL框架
- Qt 创建OpenGL窗口
- OpenGL+Qt界面(三) Qt中实现OPENGL的基本交互+代码
- OpenGL基本框架
- OpenGL的基本框架
- Qt中OpenGL窗口创建的几种形式
- Qt OpenGL 基础程序框架
- qt中的OpenGL代码框架
- QT中编译OpenGL
- Qt基本画板框架
- Qt基本框架使用:
- OpenGL源代码之基本框架
- OpenGL 2.0 基本开发框架
- Hibernate基本框架创建
- OpenGL嵌入到Qt中
- Java中对List集合的常用操作
- linux之chmod
- hibernate-mapping 中catlog作用
- 冯诺依曼计算机:机器级程序及其执行
- nodejs模仿ajax请求
- Qt中创建OpenGL基本框架
- 容器的打印
- 【已解决】onCreateViewHolder中的代码错误,导致程序崩溃
- visual studio下调试lua
- String、StringBuffer与StringBuilder之间区别
- Oracle针对SCOTT下EMP表的练习题
- Android 仿淘宝京东等我的订单界面及任意列表拓展
- 1% 50%
- android handler与回调机制的结合运用