资源简介
这个小程序是用Qt+OpenGL做的。
可以直接运行,是仿照Nehe教程中的做的。
网上学习都说OpenGL的最好教程是NeHe。
但是Windows编程很难,也很落后。
对于想学习OpenGL的人来说很有参考价值。
代码片段和文件信息
#include
#include
#include
#include “glwidget.h“
#include
#include
bool flag = false;
GLfloat LightAmbient[]= { 1.0f 1.0f 1.0f 1.0f }; // 环境光参数
GLfloat LightDiffuse[]= { 50.0f 0.0f 0.0f 1.0f }; // 漫射光参数
GLfloat LightPosition[]= { 0.0f0.0f 0.0f 1.0f }; // 光源位置
GLwidget::GLwidget(QWidget *parent)
: QGLWidget(parent)
{
PI = 3.14159;
a=2.5f;
b=2.2f;
x = y =0;
z = 5;
lx = ly = 0;
lz = -1.0;
xrot = yrot = zrot =0;
moveAngle = 0;
vertexAngle = 0;
moonAngle = 0;
earthAngle = 0;
earthRadius=0.8/100.0f;
moonRadius=earthRadius*(GLfloat)(109.0/400.0);
sunRadius=109*earthRadius;
quadratic = gluNewQuadric();
QTimer *timer = new QTimer(this);
connect(timer SIGNAL(timeout()) this SLOT(Rotate()));
connect(timerSIGNAL (timeout())thisSLOT(Revolution()));
timer->start(10);
}
GLwidget::~GLwidget()
{
}
void GLwidget::loadTextures()
{
glEnable(GL_TEXTURE_2D);
QImage text[3]buff[3];
if(!buff[0].load(“./sun.bmp“)
||!buff[1].load(“./earth.bmp“)
||!buff[2].load(“./moon.bmp“)){
printf(“Load Image failed!\n“);
}
text[0] = QGLWidget::convertToGLFormat(buff[0]);
text[1] = QGLWidget::convertToGLFormat(buff[1]);
text[2] = QGLWidget::convertToGLFormat(buff[2]);
glGenTextures(3&texture[0]);
glBindTexture( GL_TEXTURE_2D texture[0] );
glTexParameteri( GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR );
glTexImage2D( GL_TEXTURE_2D 0 3 text[0].width() text[0].height() 0
GL_RGBA GL_UNSIGNED_BYTE text[0].bits() );
glBindTexture( GL_TEXTURE_2D texture[1] );
glTexParameteri( GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR );
glTexImage2D( GL_TEXTURE_2D 0 3 text[1].width() text[1].height() 0
GL_RGBA GL_UNSIGNED_BYTE text[1].bits() );
glBindTexture( GL_TEXTURE_2D texture[2] );
glTexParameteri( GL_TEXTURE_2D GL_TEXTURE_MAG_FILTER GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D GL_TEXTURE_MIN_FILTER GL_LINEAR );
glTexImage2D( GL_TEXTURE_2D 0 3 text[2].width() text[2].height() 0
GL_RGBA GL_UNSIGNED_BYTE text[2].bits() );
}
void GLwidget::initializeGL()
{
loadTextures();
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glHint(GL_POINT_SMOOTH_HINTGL_DONT_CARE);
glClearColor(0.0f0.0f0.0f0.0f);
glClearDepth(1.0f);
glDepthFunc(GL_LEQUAL); // 所作深度测试的类型
glHint(GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST); // 告诉系统对透视进行修正
glLightfv(GL_LIGHT1 GL_AMBIENT LightAmbient); // 设置环境光
glLightfv(GL_LIGHT1 GL_DIFFUSE LightDiffuse); // 设置漫射光
glLightfv(GL_LIGHT1 GL_POSITIONLightPosition); // 设置光源位置
glEnable(GL_LIGHT1);
gluQuadricTexture(quadraticGL_TRUE);
gluQuadricNormals(quadratic GLU_SMOOTH); // 使用平滑法线
glColor4f(1.00.00.00.5);
glBlendFunc(GL_SRC_ALPHAGL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10042 2012-05-10 21:39 Release\BuildLog.htm
文件 3145784 2009-08-26 17:18 Release\earth.bmp
文件 169984 1998-08-18 16:25 Release\glut32.dll
文件 35220 2012-05-10 21:39 Release\glwidget.obj
文件 9065 2012-05-10 21:29 Release\main.obj
文件 10149 2012-05-10 21:29 Release\moc_glwidget.obj
文件 786488 2009-08-26 17:13 Release\moon.bmp
文件 67 2012-05-10 21:39 Release\mt.dep
文件 2931 2012-05-10 21:29 Release\qrc_glwidget.obj
文件 2520064 2012-04-28 09:59 Release\QtCore4.dll
文件 8351232 2012-03-22 20:15 Release\QtGui4.dll
文件 766464 2012-03-22 20:19 Release\QtOpenGL4.dll
文件 2405376 2012-05-10 21:39 Release\Solar.exe
文件 616 2012-05-10 21:39 Release\Solar.exe.intermediate.manifest
文件 2377044 2012-05-10 21:05 Release\Solar.res
文件 786486 2012-05-10 20:59 Release\sun.bmp
文件 2214912 2012-05-10 21:39 Release\vc90.idb
目录 0 2012-05-10 22:03 Release
文件 6783 2012-05-10 21:57 Release\glwidget.cpp
文件 1106 2012-05-10 22:01 Release\glwidget.h
文件 171 2012-05-09 08:05 Release\main.cpp
----------- --------- ---------- ----- ----
23599984 21
相关资源
- opengl实现的太阳系
- OpenGL 4 Shading Language Cookbook - Second Ed
- OpenGL从盒子飞出的气球
- opengl3D路灯
- QTreeWidget,项可拖动、可编辑,创建、
-
Qt读写xm
l文件,QTreeWidget显示xm l和 -
QTreeWidget,读写xm
l功能、可拖动、编 - qT围棋源码
- 反向运动学演示程序含核心代码
- QtOpenGL以及Graphics-View框架整合的演示
- 基于Qt和GLSL的着色器演示程序+源代码
- ActiveMQ_QtExample.rar
- 基于QtcpServer的网络库
- Qt_assistant简体中文版
- Qt4 图形设计与嵌入式开发 高清完整版
- 二维码解析
- OpenGL 4.0 Shading Language Cookbook
- Qt商业版完整SDK+license
- opengl改进的有效边表算法
- opencv+qt+vs的摄像头视频显示和处理G
- QT自定义toolbox
- 《Qt Creator快速入门》第二版 源代码
- Qt超市管理信息系统源码+可执行程序
- qt5超级贪吃蛇(单人双人,简单人机
- 用Qt Vs写的串口程序
- 基于QT5的学生信息管理系统
- Qt样式表武林秘籍.pdf
- 21个天空盒贴图 OPENGL
- 十几个动态MD2文件,可用于OPENGL读取
- QT+数据库(商品管理系统)
评论
共有 条评论