今天突然想做一个OpenGL的稍微大一点的应用了,比如地形模拟,粒子系统之类的,思来想去,决定用Qt做界面(方便)
推荐一个:http://115.com/file/c26jpxv1#
NeHe的教程在Qt里面的实现。
如果Qt没有在你电脑上,建议看看这个http://www.cnblogs.com/leisure/archive/2012/02/13/2349797.html
Qt界面相对于MFC、win32来说链接库方面设置简单多了。
具体步骤:
1.新建Qt项目.
Qt在方方面面做了好多集成,但是是可选的,下一步选上OpenGL库,如果害怕不兼容,也可以选上 Qt3支持。NeHe里面是Qt3的。所以选上
第二步,包含头文件:
两个头文件比较重要:
#include <qgl.h>//这个库用来设置基本的OpenGL设置 如版本检测 句柄的完成,像素格式设置等等(估计是)
#include <QtGui/qevent.h>Qt定义的窗口事件
第三步 重写虚函数
void initializeGL();
void paintGL();
void resizeGL( int width, int height );
初始化函数、绘画函数、以及窗口重置函数。
第四步
1 void NeHeWidget::initializeGL() 2 { 3 glShadeModel( GL_SMOOTH ); 4 glClearColor( 0.0, 0.0, 0.0, 0.0 ); 5 glClearDepth( 1.0 ); 6 glEnable( GL_DEPTH_TEST ); 7 glDepthFunc( GL_LEQUAL ); 8 glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); 9 } 10 11 void NeHeWidget::paintGL() 12 { 13 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); 14 glTranslated(0,0,-13); 15 glColor3f(1.0f,1.0f,0.0f); 16 glutSolidTeapot(5.0); 17 glLoadIdentity(); 18 } 19 20 void NeHeWidget::resizeGL( int width, int height ) 21 { 22 if ( height == 0 ) 23 { 24 height = 1; 25 } 26 glViewport( 0, 0, (GLint)width, (GLint)height ); 27 glMatrixMode( GL_PROJECTION ); 28 glLoadIdentity(); 29 gluPerspective( 45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0 ); 30 glMatrixMode( GL_MODELVIEW ); 31 glLoadIdentity(); 32 }
第五步
编译,运行。
(待续......)