/*********************包含链接的库文件*******************************************************************************************/
#pragma comment( lib, "opengl32.lib" )
#pragma comment( lib, "glu32.lib" )
#pragma comment( lib, "glut32.lib")
#pragma comment( lib, "glew32.lib")
#pragma comment( lib, "glaux.lib")
#pragma comment( lib, "vfw32.lib" )
/********************************************************************************************************************************/
/*#include <GL/glut.h>*/
#include "glut.h"
#include <GL/gl.h>
/*#include <GL/glaux.h>*/
#include "glaux.h"
#include <math.h>
#include <windows.h>
#define PI 3.14159265358979323846
GLfloat corner=0.0;
GLUquadricObj* qobj; //二次方程对象 a1x^2 + a2y^2 + a3z^2 + a4xy + a6xz + a7x + a8y + a9z + a10 = 0
GLuint texName, texName1, texName2;
GLuint flag=1;
GLfloat bracket_diffuseCoeff[]={0.53, 0.37, 0.10, 1.0};
GLfloat bracket_specularCoeff[]={0.53, 0.37, 0.10, 1.0};
GLfloat bracket_surfEmissionCoeff[]={0.2, 0.2, 0.2, 1.0};
GLfloat underpan_diffuseCoeff[]={0.5, 0.5, 0.0, 1.0};
GLfloat underpan_specularCoeff[]={0.5, 0.5, 0.0, 1.0};
GLfloat underpan_surfEmissionCoeff[]={0.2, 0.2, 0.2, 1.0};
GLfloat wall_mat[]={0.6,0.6,0.6,1};
GLfloat wall_mat1[]={1,0,0,1};
GLfloat wall_mat2[]={0.6,0.6,0.6,1};
GLfloat shininess[]={25.0};
void draw_semi_circle(float r) //中心在(x,y,0),半径为r的半圆
{
float angle;
glBegin(GL_LINE_STRIP);
for(angle = 2*PI; angle >= PI; angle -= PI/100)
{
glVertex3f(r*cos(angle),r*sin(angle),0);
}
glEnd();
}
void draw_salver(float x, float y, float a, float b) //中心在(x,y,0),长半轴为a,短半轴为b的椭圆
{
float angle;
glTranslatef(x,y,0);
glBegin(GL_TRIANGLE_FAN);
for(angle = 2*PI; angle >= 0; angle -= PI/360)
{
glVertex3f(a*cos(angle),b*sin(angle),0);
}
glEnd();
}
void draw_tellurion()//地球仪
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
GLfloat light0_ambient[] = { 0.3, 0.4, 0.6, 1};
GLfloat light0_diffuse[] = { 0.5, 0.4, 0.4, 1 };
GLfloat light0_specular[] = { 0.5, 0.5, 0.5, 1};
GLfloat light0_position[] = { 1, 1, 1, 0 }; //方向性光源,类似太阳
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular);
glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse);
glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient);
glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
glPopMatrix();
glPushMatrix();
GLfloat light1_diffuse[] = { 0.3, 1, 0, 1};
GLfloat light1_position[] = {0.8, 1, 0.4, 1 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
glLightfv(GL_LIGHT1, GL_POSITION, light1_position);
glPopMatrix();
glPushMatrix();
GLfloat light2_diffuse[] = { 1, 0.2, 0, 1 };
GLfloat light2_position[] = {0.5, 0.2, 1, 1 }; //点光源
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT2);
glLightfv(GL_LIGHT2, GL_DIFFUSE, light2_diffuse);
glLightfv(GL_LIGHT2, GL_POSITION, light2_position);
glPopMatrix();
glPushMatrix();
GLfloat light3_diffuse[] = { 0.1, 0.8, 0, 1 };
GLfloat light3_position[] = {-0.7, -0.1, 1, 1 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT3);
glLightfv(GL_LIGHT3, GL_DIFFUSE, light3_diffuse);
glLightfv(GL_LIGHT3, GL_POSITION, light3_position);
glPopMatrix();
glPushMatrix();
GLfloat light4_diffuse[] = { 0, 1, 0, 1 };
GLfloat light4_position[] = {-0.5, -0.2, -1, 1 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT4);
glLightfv(GL_LIGHT4, GL_DIFFUSE, light4_diffuse);
glLightfv(GL_LIGHT4, GL_POSITION, light4_position);
glPopMatrix();
glPushMatrix();
GLfloat light5_diffuse[] = { 0.4, 0.8, 1, 0 };
GLfloat light5_position[] = {-0.5, 0.2, 1, 0 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT5);
glLightfv(GL_LIGHT5, GL_DIFFUSE, light5_diffuse);
glLightfv(GL_LIGHT5, GL_POSITION, light5_position);
glPopMatrix();
glPushMatrix();
GLfloat light6_diffuse[] = { 1, 0.3,1, 1 };
GLfloat light6_position[] = {-0.5, 0.2, 1, 0 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT6);
glLightfv(GL_LIGHT6, GL_DIFFUSE, light6_diffuse);
glLightfv(GL_LIGHT6, GL_POSITION, light6_position);
glPopMatrix();
glPushMatrix();
GLfloat light7_diffuse[] = { 0.6, 0,0, 0 };
GLfloat light7_position[] = {0.5, -0.2, -1, 0 };
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT7);
glLightfv(GL_LIGHT7, GL_DIFFUSE, light7_diffuse);
glLightfv(GL_LIGHT7, GL_POSITION, light7_position);
glPopMatrix();
glPushMatrix(); //wall
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, wall_mat);
glBindTexture(GL_TEXTURE_2D,texName1);////////////////////////////////////////////////////////////Opengl
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glBegin(GL_QUADS);
glTexCoord2f(1,0);glVertex3f( -1.0f, -1.0f,-1.0f );
glTexCoord2f(1,1);glVertex3f( -0.6f, -0.6f,1.0f );
glTexCoord2f(0,1);glVertex3f( -0.6f, 0.6f,1.0f );
glTexCoord2f(0,0);glVertex3f( -1.0f, 1.0f,-1.0f );
glEnd();
glBegin(GL_QUADS);
glTexCoord2f(0,0);glVertex3f( 1.0f, -1.0f,-1.0f );
glTexCoord2f(1,0);glVertex3f( 1.0f, 1.0f,-1.0f );
glTexCoord2f(1,1);glVertex3f( 0.6f, 0.6f,1.0f );
glTexCoord2f(0,1);glVertex3f( 0.6f, -0.6f,1.0f);
glEnd();
glDisable(GL_TEXTURE_2D);
glPopMatrix();
glPushMatrix(); //floor
glBindTexture(GL_TEXTURE_2D,texName2);///////////////////////////////////////////////////地板
glEnable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST);
glBegin(GL_QUADS);
glTexCoord2f(1,1);glVertex3f( -1.0f, -1.0f,-1.0f );
glTexCoord2f(1,0);glVertex3f( 1.0f, -1.0f, -1.0f );
glTexCoord2f(0,0);glVertex3f( 0.6f, -0.6f,1.0f );
glTexCoord2f(0,1);glVertex3f( -0.6f, -0.6f,1.0f );
glEnd();
glDisable(GL_TEXTURE_2D);
glPopMatrix();
glBegin(GL_QUADS); //顶
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, wall_mat2);
glVertex3f( 0.6f, 0.6f, 1.0f );
glVertex3f( 1.0f, 1.0f, -1.0f );
glVertex3f( -1.0f, 1.0f, -1.0f );
glVertex3f( -0.6f, 0.6f, 1.0f );
glEnd();
//画球体
glPushMatrix();
glTranslatef(0,-0.14,0);
glBindTexture(GL_TEXTURE_2D,texName); //////////////////////////////////地图
glEnable(GL_TEXTURE_2D);
gluQuadricTexture(qobj,GL_TRUE);
glRotatef(-90.0f,1.0f,0.0f,0.0f);
glRotatef(66.3f,0.0f,0.0f,1.0f);
glRotatef(-corner,0.0,-0.261,0.595);
gluSphere(qobj,0.45,60,60);
glDisable(GL_TEXTURE_2D);
glPopMatrix();
//画地球仪下方的托盘
glPushMatrix();
glTranslatef(0,-0.14,0);
glScalef(0.8f, 0.8f, 0.8f);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, underpan_diffuseCoeff);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, underpan_specularCoeff);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, underpan_surfEmissionCoeff);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
glLineWidth(2.5);
draw_salver(-0.322,-0.733,0.45,0.1);
glPopMatrix();
//画地球仪的支架——两部分:中轴、半园支架
//画穿地球的轴
glPushMatrix();
glTranslatef(0,-0.14,0);
glScalef(0.8f, 0.8f, 0.8f);
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bracket_diffuseCoeff);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, bracket_specularCoeff);
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, bracket_surfEmissionCoeff);
glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shininess);
glLineWidth(4.5);
glBegin(GL_LINES);
glVertex3f(-0.322,-0.733,0.0);
glVertex3f(0.261,0.595,0.0);
glEnd();
//画地球仪外边的半园支架
glRotatef(66.3f,0.0f,0.0f,1.0f);
glLineWidth(6.5);
draw_semi_ci
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
earthusingopengl+VC++.rar (63个子文件)
01_BaseFrame
worldmap.bmp 3MB
01_BaseFrame.vcproj 3KB
01_BaseFrame.vcxproj.user 143B
UpgradeLog.XML 5KB
wglew.h 38KB
_UpgradeReport_Files
UpgradeReport.xslt 12KB
UpgradeReport_Minus.gif 69B
UpgradeReport.css 3KB
UpgradeReport_Plus.gif 71B
OpenGL32.Lib 75KB
GlU32.Lib 12KB
GLAUX.H 12KB
GLAUX.LIB 1.25MB
glut32.lib 78KB
OpenGL.bmp 192KB
01_BaseFrame.vcxproj 5KB
glut.h 21KB
floor.bmp 48KB
01_BaseFrame.sdf 27.52MB
01_BaseFrame.sln 885B
base.cpp 11KB
ipch
01_baseframe-8ef5475b
01_baseframe-178a90b2.ipch 32MB
Debug
vc100.idb 363KB
link.44-cvtres.read.1.tlog 2B
01_BaseFrame.Build.CppClean.log 2KB
CL.write.1.tlog 318B
glu32.dll 119KB
CL.read.1.tlog 12KB
mt.read.1.tlog 172B
rc.write.1.tlog 306B
01_BaseFrame_manifest.rc 214B
01_BaseFrame.exe.intermediate.manifest 381B
01_BaseFrame.exe.embed.manifest.res 472B
rc.read.1.tlog 298B
glut32.dll 166KB
base.obj 63KB
mt.command.1.tlog 408B
cl.command.1.tlog 610B
link-cvtres.read.1.tlog 2B
glew32.dll 188KB
link.write.1.tlog 812B
01_BaseFrame.lastbuildstate 65B
01_BaseFrame.log 4KB
link-cvtres.write.1.tlog 2B
01_BaseFrame.vcxprojResolveAssemblyReference.cache 707B
link.command.1.tlog 2KB
rc.command.1.tlog 566B
link.read.1.tlog 5KB
01_BaseFrame.pdb 1.99MB
01_BaseFrame.exe.embed.manifest 406B
mt.write.1.tlog 326B
link.44-cvtres.write.1.tlog 2B
link.44.read.1.tlog 2B
link.44.write.1.tlog 2B
01_BaseFrame.exe 498KB
01_BaseFrame.ilk 1.28MB
01_BaseFrame.write.1.tlog 0B
vc100.pdb 100KB
opengl32.dll 697KB
glew.h 463KB
glew32.lib 275KB
01_BaseFrame.vcxproj.filters 920B
01_BaseFrame.suo 19KB
共 63 条
- 1
忘忧草和开心果
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页