资源简介
这个小程序是用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
相关资源
- 酒店管理系统基于Qt Creator5)
- OpenGL参考手册
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- OpenGL文档,api大全,可直接查询函数
- C 餐厅叫号系统(QT平)
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- QT 实现文件下载
- qt图像处理
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- QT,JPEG解码源代码(已完成)
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- Qt 播放音频文件
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- OPENGL实现世界上最小的3D游戏
评论
共有 条评论