乐之者体感开发

好知者不如乐之者,体感开发请点击:http://www.enjoythis.net/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

今天突然想做一个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 }

 

第五步

编译,运行。

(待续......)

 

 

posted on 2012-04-22 22:04  伟征  阅读(1693)  评论(0编辑  收藏  举报