Qt 与 OpenGL ES
<?NOINDEX-START?>
<?NOINDEX-END?>
简介
本文结合Qt的例子hellogl_es2,介绍 如何在Qt中使用OpenGL ES,这个例子可以运行在symbian^3平台的手机上。 OpenGL ES 是一精心挑选的OpenGL的子集。OpenGL ES 1.x 版本 为固化在硬件中的程序设计,OpenGL ES 2.x版本提供完整的可编程3D图形接口,这里我们为智能移动设备开发,关注Qt 和OpengGL ES 2.x版本的应用。
开发环境
- 本应用程序是用 QT SDK创建 ,Qt SDK 包含Qt Creator做为IDE,并包含对多个平台的支持,因此安装Qt SDK后即可开发运行在symbian^3,maemo和桌面(windows,linux,mac)上的OpenGL程序
- 下载地址: http://qt.nokia.com/downloads
开始
OpenGL ES作为OpenGL 的子集,使用与OpenGL一样的基本概念,应从OpenGL开始
OpenGL入门
- OpenGL的学习很有名的入门 :NeHe的OpenGL学习网站
- Qt 中使用OpenGL必看齐亮迁移的NeHe OpenGL教程Qt版:Qt OpenGL教程
- OpenGL的官方文档也是必备参考书: OpenGL 红宝书,学习OpenGL及其他3D图形引擎需要线性代数的一些知识以更好的理解坐标变换等矩阵运算, 头脑中建立正确的几何图景,并结合齐亮的Qt OpenGL教程在Qt 上验证,使用Qt学习OpenGL可以发挥Qt跨平台的有点,先运行桌面版的OpenGL,熟悉概念后,快速直接的转到OpenGL ES为移动设备开发。较早的接触OpenGL ES以避免学习OpenGL中非OpenGL ES的命令。
- OpenGL ES的快速查询卡:The OpenGL ES 2.0 Quick Reference Card
建议有OpenGL经验的开发者通过OpenGL ES卡片做为提纲快速入手OpenGL ES, 下文以Qt 自带的例子hellogl_es2来演示Qt 与OpenGL ES和 OpeGl ShadingLanguage的使用。
QGLWidget
- 本节对比齐亮教程第一课:创建一个OpenGL窗口
Qt通过QGLWidget来使用OpenGL。下面hellogl_es2中的glwidget.h 的部分代码
class GLWidget : public QGLWidget {
Q_OBJECT
.........
protected:
void paintGL ();
void initializeGL ();
.........
}
initializeGL()是用来初始化这个OpenGL窗口部件的,可以在里面设定一些有关选项。paintGL()就是用来绘制OpenGL的窗口了,只要有更新发生,这个函数就会被调用。