资源简介
opengl使用顶点数组画出球体,实现地球围绕太阳转动,左键加快地球围绕太阳的转速,右键减慢地球围绕太阳的转速

代码片段和文件信息
#include
#include
#include
#include
#include
#pragma comment(lib “glaux.lib“)
float theta[3]={0.00.00.0};
double speed=0.05;
double day=0.0;
float view[3]={4.0-74.0};
unsigned int g_texture[3];
void sphere(GLfloat fRadius)
{
int longitude=20;
int latitude=20;
double PI=3.1415926;
GLfloat drho = PI / (GLfloat) longitude;
GLfloat dtheta = 2.0f * PI / (GLfloat) latitude;
GLfloat ds = 1.0f / (GLfloat) latitude;
GLfloat dt = 1.0f / (GLfloat) longitude;
GLfloat t = 1.0f;
GLfloat s = 0.0f;
GLint i j;
for (i = 0; i < longitude; i++)
{
GLfloat rho = (GLfloat)i * drho;
GLfloat srho = (GLfloat)(sin(rho));
GLfloat crho = (GLfloat)(cos(rho));
GLfloat srhodrho = (GLfloat)(sin(rho + drho));
GLfloat crhodrho = (GLfloat)(cos(rho + drho));
s = 0.0f;
GLfloat sv[42][3];
GLfloat normal[42][3];
GLfloat texture[42][2];
int i=0;
for ( j = 0; j <= latitude; j++)
{
GLfloat theta = (j == latitude) ? 0.0f : j * dtheta;
GLfloat stheta = (GLfloat)(-sin(theta));
GLfloat ctheta = (GLfloat)(cos(theta));
GLfloat x = stheta * srho;
GLfloat y = ctheta * srho;
GLfloat z = crho;
sv[i][0]=x * fRadius;
sv[i][1]=y * fRadius;
sv[i][2]=z * fRadius;
normal[i][0]=x;
normal[i][1]=y;
normal[i][2]=z;
texture[i][0]=s;
texture[i][1]=t;
x = stheta * srhodrho;
y = ctheta * srhodrho;
z = crhodrho;
s += ds;
sv[i+1][0]=x * fRadius;
sv[i+1][1]=y * fRadius;
sv[i+1][2]=z * fRadius;
normal[i+1][0]=x;
normal[i+1][1]=y;
normal[i+1][2]=z;
texture[i+1][0]=s;
texture[i+1][1]=t-dt;
i +=2;
}
glVertexPointer(3GL_FLOAT0sv);
glNormalPointer(GL_FLOAT0normal);
glTexCoordPointer(2GL_FLOAT0texture);
glDrawArrays(GL_TRIANGLE_STRIP042);
t -= dt;
}
}
void mydisplay()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(45.01.01.020);
gluLookAt(view[0]view[1]view[2]000001);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D g_texture[0]);
sphere(0.6);
glBindTexture(GL_TEXTURE_2D g_texture[1]);
day +=speed;
if(day>360.0) day=0.0;
glRotated(-day001);
glTranslatef(3.00.00.0);
sphere(0.3);
glBindTexture(GL_TEXTURE_2D g_texture[2]);
glRotated((day/40.0*360.0 - day)00-1);
glTranslatef(0.60.00.0);
sphere(0.15);
GLfloat light_model_ambient[]={0.70.70.71.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENTlight_model_ambient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glutPostRedisplay();
glutSwapBuffers();
glFlush();
}
//载入一个.bmp格式的贴图纹理
int LoadGLTextures(GLuint* unTexture)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-10-26 08:08 11301046_王真真_Assignment1\
目录 0 2013-10-26 08:14 11301046_王真真_Assignment1\screenshot\
文件 26923 2013-10-26 08:12 11301046_王真真_Assignment1\screenshot\截图1.png
文件 32472 2013-10-26 08:13 11301046_王真真_Assignment1\screenshot\截图2.png
文件 19154 2013-10-26 08:14 11301046_王真真_Assignment1\screenshot\截图3.png
目录 0 2013-10-26 08:18 11301046_王真真_Assignment1\source code\
文件 786488 2013-10-26 02:29 11301046_王真真_Assignment1\source code\earth1.bmp
文件 7098 2013-10-26 02:41 11301046_王真真_Assignment1\source code\exercise2.cpp
文件 786488 2013-10-26 02:33 11301046_王真真_Assignment1\source code\moon1.bmp
文件 786488 2013-10-25 22:59 11301046_王真真_Assignment1\source code\sun1.bmp
文件 62976 2013-10-26 02:41 11301046_王真真_Assignment1\source code\test2.exe
目录 0 2013-10-26 08:18 11301046_王真真_Assignment1\source code\库文件\
文件 12024 2011-11-13 16:06 11301046_王真真_Assignment1\source code\库文件\GLAUX.H
文件 1189322 2011-11-13 17:02 11301046_王真真_Assignment1\source code\库文件\GLAUX.LIB
文件 1386496 2011-11-13 16:06 11301046_王真真_Assignment1\source code\库文件\glaux.dll
文件 169984 1998-08-18 16:25 11301046_王真真_Assignment1\source code\库文件\glut.dll
文件 21440 1998-08-18 16:24 11301046_王真真_Assignment1\source code\库文件\glut.h
文件 79654 1998-08-18 16:25 11301046_王真真_Assignment1\source code\库文件\glut.lib
文件 169984 1998-08-18 16:25 11301046_王真真_Assignment1\source code\库文件\glut32.dll
文件 79898 1998-08-18 16:25 11301046_王真真_Assignment1\source code\库文件\glut32.lib
文件 203 2013-10-26 08:08 11301046_王真真_Assignment1\说明.txt
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论