资源简介
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
相关资源
- opnegl 太阳 月亮 地球 天体旋转
- glut库glew库glfw库glaux库
- OpenGL小车三维模型源码.zip
- 虚拟环境漫游系统
- 基于OpenGL实现俄罗斯方块
- OpenGL简单场景编程
- glui for opengl(glui.h glui32.lib)
- myRay_Tracer.zip
- opengl画三角形
- opengl绘制树
- qt opengl(after ver2.1) 渲染 nv12
- 3D Helicopter
- 计算机图形大作业opengl-物联网.rar
- OpenGL安装包.zip
- OpenGl读取obj格式文件
- OpenGL Shading Language (3rd Edition)
- VC实现OpenGL三维绘图
- OpenGL_Nehe(NeHe中文教程)pdf+源码
- OpenGL配置文件
- OpenGL安装包
- OPENGL读取obj模型_visual stdio2015
- opengl + glfw _glad 实现天空盒
- Simulating planar reflection using two-pass re
- OpenGL球体绘制与球体贴图
- 使用OpenGL绘制Bezier曲线
- OpenGL卡通人脸绘制
- 电子科大UESTC_OPENGL三维图形程序设计
- 图形学,利用OpenGL函数进行鼠标、键
- opengl 读取与显示obj文件
- GLFW-3.2.bin.WIN32
评论
共有 条评论