OpenGL框架+QT版
原地址:http://blog.chinaunix.net/uid-25799257-id-3498005.html
之前一直做地图的算法,没什么时间学习opengl,之前看nehe_OpenGL.chm和Qt+OpenGL教程_for_Qt_4.5.3.doc(感谢分享的网友),看了一些,大概入门了算是;因为公司的opengl代码是高手写的,我们呢??只是调用接口,呵呵,做算法,不过了,还是慢慢的学习了很多东西;
这里还是把之前从文档里面摘取除了的qt的opengl框架留着,想用的时候方便,省的每次敲,作为学习模版还是不错的。
Qt安装好后,基本上opengl可以使用了,不过需要在工程配置文件中加入配置选项;然后基本的.c、.h文件,差不多了!!!
工程配置文件:(.pro)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#-------------------------------------------------## Project created by QtCreator 2012-12-29T12:00:04##-------------------------------------------------QT += core guiQT += opengl //OPENGL库支持QT += qt3support //支持qt3支持TARGET = SecondOpengglTEMPLATE = appSOURCES += main.cpp\ widget.cppHEADERS += widget.hFORMS += widget.ui |
.h文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#ifndef WIDGET_H#define WIDGET_H#include <qgl.h>namespace Ui { class Widget;}class Widget : public QGLWidget{ Q_OBJECTpublic: explicit Widget(QGLWidget *parent = 0, const char* name = 0, bool fs = false); ~Widget();protected: void initializeGL(); //glpt初始化 void paintGL(); //绘制纹理 void resizeGL(int width, int height); //调整宽高protected: bool fullscreen; //是否全屏private: Ui::Widget *ui;};#endif // WIDGET_H |
.c文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#include "widget.h"#include "ui_widget.h"Widget::Widget(QGLWidget *parent, const char* name, bool fs) : QGLWidget(parent, name), ui(new Ui::Widget){ ui->setupUi(this); fullscreen = fs;}Widget::~Widget(){ delete ui;}void Widget::initializeGL() // 初始化OpenGL{ /********************用户自定义的初始化过程*******************/ glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // 设置颜色缓冲 glClearDepth(1.0f); // 设置深度缓冲 glDepthFunc(GL_LEQUAL); // 指定深度缓冲比较值(如果输入的深度值小于或等于参考值,则通过) glEnable(GL_DEPTH_TEST); // 启用深度缓冲 glShadeModel(GL_SMOOTH); // 指定两点间其他点颜色的过渡模式(GL_SMOOTH会出现过渡效果,GL_FLAT 则只是以指定的某一点的单一色绘制其他所有点) glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 指定所控制行为的符号常量 /*********************************************************/ return;}void Widget::paintGL(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除颜色缓冲和深度缓冲 glLoadIdentity(); // 重置模型观察矩阵 ///////////////////在此处添加绘制代码//////////////// glTranslatef( -1.5, 0.0, -6.0); // 相对与当前所在的屏幕位置进行移动 ///////////////////在此处添加绘制代码////////////////}void Widget::resizeGL(int width, int height) // 窗口大小改变时重新调用{ if (0 == height) { height = 1; } if (0 == width) { width = 0; } glViewport(0, 0, (GLint)width, (GLint)height); // 重置当前的视口(Viewport) glMatrixMode(GL_PROJECTION); // 选择投影矩阵 glLoadIdentity(); // 重置投影矩阵 gluPerspective(45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0); // 建立透视投影矩阵 glMatrixMode(GL_MODELVIEW); // 选择模型观察矩阵 glLoadIdentity(); // 重置模型观察矩阵} |
main.c文件:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <QtGui/QApplication>#include <qicon.h>#include "widget.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); a.setWindowIcon(QIcon("dog.bmp")); Widget w(0, 0, false); w.setWindowTitle("YOU IS YOU"); w.show(); return a.exec();}
|
OpenGL框架+QT版的更多相关文章
- 流风ASP.NET框架商业版-工作流1.0简介
流风ASP.NET框架商业版-工作流1.0简介 工作流简介 在流风ASP.NET框架商业版1.0推出后,就有集成工作流的想法,但是由于工作繁忙和其他事情的耽搁,时隔半年之久工作流1.0的版本才姗姗来迟 ...
- VC基于单文档OpenGL框架
本文是在VC6.0的环境下,运用MFC实现的OpenGL最基本框架,需要简单了解MFC编程(会在VC6.0里创建MFC单文档应用程序就行),甚至不必了解OpenGL的知识.以下是具体的步骤. 1.创建 ...
- 基于C/S架构的3D对战网络游戏C++框架_04客户端详细设计与OpenGL、Qt基础
本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...
- Jeasyframe 开源框架 稳定版 V1.5 发布
这是Jeasyframe开源框架的第一个稳定版本,感谢一起帮忙测试并给予反馈的网友们. 框架官网:http://www.jeasyframe.org/ 产品介绍: Jeasyframe开源框架是基于S ...
- Qt版helloworld
跟学别的编程语言一样,Qt也不例外,一开始就想写一个helloworld.初学Qt十几天,看了一点关于Qt视频的介绍和书上的基础知识,对于Qt写工程的概念有了初步的认识,就代码的形式来说,Qt Cre ...
- Linux下安装QT和OpenGL后QT无法使用OpenGL的解决方法
我的系统为Ubuntu14.04,用apt-get安装了实现了OpenGl的mesa,QT则是用官网下载的run文件来安装的. 好了,现在两个都分别有了,所以要在qt下尝试写OpenGl代码. 之前试 ...
- OpenGL编程-OpenGL框架-win32项目
在win32项目中开发的程序 小知识: 控制台应用程序运行就是dos的界面 项目一般采用了可视化开发 开发出来的东西就像QQ之类的 是有窗口界面的 程序运行结果是这样的 源代码:对第45行进行覆盖 # ...
- 简单实现Spring框架--注解版
自己写的Spring框架——简单实现IoC容器功能 前几天在网上看了篇帖子,是用xml的方式实现spring的ioc容器,觉得挺有意思的,这边自己试着用注解的形式造了一套轮子. 工程结构 codein ...
- 基于对话框的Opengl框架
转自:http://blog.csdn.net/longxiaoshi/article/details/8238933 12-11-29 14:55 1198人阅读 评论(6) 收藏 举报 分类: ...
随机推荐
- poj 3984 迷宫问题(dfs)
题目链接:http://poj.org/problem?id=3984 思路:经典型的DFS题目.搜索时注意剪枝:越界处理,不能访问处理. 代码: #include <iostream> ...
- android 项目中log信息的正确处理
我们在做项目中,调试程序的时候通常是debug或者打log,特别是看一些json数据之类的,都喜欢打log看看,可是在项目上线时log信息一定不能被打印出来,大家能够平时下载一些做的烂的app,连接e ...
- win32多线程程序设计笔记(第四章下)
上一笔记讲了同步机制中的临界区域(Critical Sections).互斥器(Mutexes),下面介绍同步机制中的另外两种. 信号量(Semaphores) 举个例子: 现在有人要租车,接待他的代 ...
- 十:Java之泛型
[定义] 一.泛型的定义主要有下面两种: 在程序编码中一些包括类型參数的类型,也就是说泛型的參数仅仅能够代表类.不能代表个别对象.(这是当今较常见的定义) 在程序编码中一些包括參数的类.其參数能够代表 ...
- IIS7.0+SqlServer2012,进行.net网站发布的安装全过程
1..net3.5安装(sqlserver2012需要) 控制面板-->管理工具-->服务器管理器-->功能-->添加功能-->选择".NET Framewor ...
- Android自动化测试基础知识——MONKEY测试工具(转的)
本周开始启动手机输入法simeiji的自动化测试,同时开始接触手机浏览器自动化测试.接下来会对android自动化测试工具和方法做一个专题研究. 第一篇介绍monkey测试工具. 1 自动化测试背景 ...
- C# 7.0
C# 7.0 本文参考Roslyn项目中的Issue:#118. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性 ...
- RAD Studio 10 自带Demo代码汇总说明
大家好,好多朋友来信咨询Delphi和C++Builder的移动开发.DataSnap架构等问题,希望能有Demo代码学习.其实Delphi和C++Builder本身自带有很多示例代码,已经覆盖了大部 ...
- 数论(容斥原理)hdu-4509-The Boss on Mars
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4059 题目大意: 给一个n,求1~n中与n互质的数的4次方的总和. 解题思路: 容斥原理.逆元.公式 ...
- mysql HA方案: MHA
mysql-master-ha mysql 做热备和高可用的方法有很多种, 比如: mmm: http://mysql-mmm.org/ mha: https://code.google.com/p/ ...