• 大小: 7.36MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-26
  • 语言: 其他
  • 标签: Qt  OpenGL  

资源简介

这个小程序是用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


评论

共有 条评论