• 大小: 2.37MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-12
  • 语言: 其他
  • 标签: opengl  顶点数组  

资源简介

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

评论

共有 条评论