qt opengl lesson1 建立一个opengl窗口
2017-01-19 20:29
351 查看
这是一个系列的文章,这个系列来自于github上的一个开源项目
https://github.com/chenzilin/qt-opengl
之前也看到其它的博客上有翻译到这些文章,但是那些实例都比较旧,到新版本qt creator中不大不能运行,所以就有了新翻译一个系列的方法。
还有就是git上的提交相比于之前增加了很多lesson,有助于想学习qt opengl的程序员更深入学习理解opengl。
如果有不足的地方,欢迎指正,欢迎交流。
第一篇新建立一个窗口,背景有点问题,但是不知道怎么修改。
有个问题折腾了一会儿,就是不显示背景颜色,直接截取的电脑屏幕显示在上面,暂时还不知道为什么,继续下一个lesson的编写。
https://github.com/chenzilin/qt-opengl
之前也看到其它的博客上有翻译到这些文章,但是那些实例都比较旧,到新版本qt creator中不大不能运行,所以就有了新翻译一个系列的方法。
还有就是git上的提交相比于之前增加了很多lesson,有助于想学习qt opengl的程序员更深入学习理解opengl。
如果有不足的地方,欢迎指正,欢迎交流。
第一篇新建立一个窗口,背景有点问题,但是不知道怎么修改。
#------------------------------------------------- # # Project created by QtCreator 2017-01-19T19:40:26 # #------------------------------------------------- QT += core gui opengl greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = lesson1 TEMPLATE = app SOURCES += main.cpp\ myglwidget.cpp HEADERS += \ myglwidget.h LIBS = -lglut -lGLU
#ifndef MYGLWIDGET_H #define MYGLWIDGET_H #include <QGLWidget> #include <QKeyEvent> class MyGLWidget : public QGLWidget { Q_OBJECT public: explicit MyGLWidget(QWidget *parent = 0); ~MyGLWidget(); protected: virtual void paintGL(); virtual void initializeGL(); virtual void resizeGL(int w, int h); virtual void keyPressEvent(QKeyEvent *event); private: bool mFullScreen; }; #endif // MYGLWIDGET_H
#include <QApplication> #include <GL/glu.h> #include "myglwidget.h" /* * create a blank opengl window * you can resize the window and ESC for exit * it is the application framework for later */ MyGLWidget::MyGLWidget(QWidget *parent) { showNormal(); } MyGLWidget::~MyGLWidget() { } void MyGLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); } void MyGLWidget::initializeGL() { glShadeModel(GL_SMOOTH); // blue background glClearColor(0.0f, 0.0f, 1.0f, 0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); } // resize the window void MyGLWidget::resizeGL(int width, int height) { if (height == 0) height = 1; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 0.1f, 100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void MyGLWidget::keyPressEvent(QKeyEvent *event) { switch(event->key()) { case Qt::Key_F2: { mFullScreen = !mFullScreen; if (mFullScreen) showFullScreen(); else showNormal(); updateGL(); break; } case Qt::Key_Escape: { qApp->exit(); break; } } }
#include <QApplication> #include "myglwidget.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MyGLWidget w; w.show(); return a.exec(); }
有个问题折腾了一会儿,就是不显示背景颜色,直接截取的电脑屏幕显示在上面,暂时还不知道为什么,继续下一个lesson的编写。
相关文章推荐
- 【Qt OpenGL教程】01:创建一个OpenGL窗口
- QT 上建立一个小窗口
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
- qt opengl lesson2 绘制一个三角形和一个正方形
- OpenGl学习笔记1——建立一个可以支持OpenGL的窗口
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- QT中使用OpenGL(0)——创建一个窗口
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- 纹理窗口Qt+OpenGL之纹理贴图
- 【Android Training - 03】使用Fragments建立动态的UI [ Lesson 2 - 新建一个Fragment ]
- NeHe_001_创建一个OpenGL窗口
- xlib创建一个openGL简单窗口
- 使用Windows窗口句柄建立OpenGL环境
- OpenGL 创建一个CEGUI窗口
- OpenGL1-创建窗口(建立Win32的OpenGL开发环境 )(代码上传)
- MFC建立一个文档视图的工程,然后在窗口上显示数据
- QT:窗口最小化时显示一个小浮标