资源简介

1. 绘制带有光照效果的场景; 2. 场景包含 3 个茶壶,通过键盘 123 可以分别选中三个茶壶,然后用鼠标对每个茶壶 进行分别的旋转; 3. 使用点光源,点光源为白色,以白色的球体表示; 4. 使用 3 个不同的点光源 i. 光源 1 的坐标设置在世界坐标系中,并围绕着三个茶壶的中心进行圆周运动; ii. 光源 2 的坐标 设置在观察坐标系,不发生变化; iii. 光源 3 的坐标设置在茶壶 1 的物体坐标系中,当茶壶 1 被选中进行旋转时,光 源 3 要跟随茶壶 1 做相同的旋转;

资源截图

代码片段和文件信息

// OpenGL_App.cpp : Defines the entry point for the console application.
//

#include “stdafx.h“
#include 
#include 
#include 
#include 
#include “gl\glew.h“
#include 
#include 
#pragma comment(lib“glew32.lib“)
#pragma comment(lib“glew32s.lib“)
#pragma comment(lib“glut32.lib“)
using namespace std;

// simple Camera:
struct simpleCamera
{
float camera[3];
float lookat[3];
float cam[3];
};

enum LightPositionCoord
{
EYE_SPACE=0
WORLD_SPACE
object_SPACE
};

int g_renderObj;

bool isRotatef[4];  // 控制要旋转的茶壶或旋转视图
bool gLightOpen[3];
float gRotatefSpeed_1 = 0; //第一个光源绕三个茶壶的中心旋转的角度
GLfloat g_LightPosition1[] = {0.0f 0.0f 0.0f 1.0f}; //第一个点光源的位置
GLfloat g_LightPosition2[] = {0.0f 2.0f 5.0f 1.0f}; //第二个点光源的位置
GLfloat g_LightPosition3[] = {-1.5f 0.0f 1.5f 1.0f}; //第三个点光源的位置


GLfloat g_LightZero[] = {0.0f 0.0f 0.0f 1.0f};

static int g_mousePos_x = 0 g_mousePos_y = 0 g_tmpX g_tmpY; 
bool g_rotate=false;
int  g_Counter;
GLint g_SphereComplexity = 5;
GLfloat g_Shininess = 1;
LightPositionCoord g_LightPosCoord=EYE_SPACE;
float g_RotatefY = 0;
simpleCamera    g_camera;

GLfloat mat_specular[] = {1.0 1.0 1.0 1.0}; //材料的镜面颜色
GLfloat mat_emission[] = {0.5 0.5 0.5 1.0}; //材料的发射颜色
GLfloat no_shininess[] = {0.0}; //镜面指数
GLfloat no_mat[] = {0.0 0.0 0.0 1.0}; 
GLfloat high_shininess[] = {100.0};
GLfloat no_specular[] =  {1.0 1.0 1.0 1.0};

GLfloat Ambient_Teapot1[]   = {0.1 0.1 0.1 1.0};  //1号茶壶的材质属性
GLfloat Diffuse_Teapot1[]   = {0.9 0.8 0.0 1.0};
GLfloat Specular_Teapot1[]  = {0.9 0.8 0.1 1.0};
GLfloat Shininess_Teapot1[] = {110.0};

GLfloat Ambient_Teapot2[]   = {0.5 0.0 0.1 1.0};  //2号茶壶的材质属性
GLfloat Diffuse_Teapot2[]   = {0.1 0.5 0.99 1.0};
GLfloat Specular_Teapot2[]  = {0.2 0.1 0.4 1.0};
GLfloat Shininess_Teapot2[] = {10.0};
GLfloat Emission_Teapot2[]  = {0.5 0.5 0.0 1.0};

GLfloat Ambient_Teapot3[]   = {0.0 0.0 0.99 1.0};  //3号茶壶的材质属性
GLfloat Diffuse_Teapot3[]   = {0.5 0.99 0.5 1.0};
GLfloat Specular_Teapot3[]  = {0.0 0.0 0.99 1.0};
GLfloat Shininess_Teapot3[] = {110.0};


void animate(void);
void CheckExtensions();
void display();
void init();
void initGLEW();
void keyboard(unsigned char key int x int y);
void motion(int x int z);
void mouse(int button int state int x int z);
void reshape(int w int h);
void createLight();
void cube();


void init(void)
{
glClearColor(0.0f 0.0f 0.0f 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    gLightOpen[0] = gLightOpen[1] = gLightOpen[2] = true;  //三个光源都开启
glEnable(GL_DEPTH_TEST);

initGLEW();
CheckExtensions();

createLight();
isRotatef[3] = true; //默认移动鼠 标旋转整个视图

g_renderObj = 0;
}

void createLight()
{
glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);
GLfloat LightAmbient1[]= { 1.0f 1.0f 1.0f 1.0f };
GLfloat LightDiffuse1[]= { 1.0f 1.0f 1.0f 1.0f };

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     160256  2011-10-17 19:37  OpenGL三茶壶三光源(光源绕着茶壶旋转)\GLUT32.DLL

     文件      13495  2011-10-27 00:19  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App\OpenGL_App.cpp

     文件       4383  2011-10-17 11:29  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App\OpenGL_App.vcproj

     文件       1427  2011-10-27 00:19  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App\OpenGL_App.vcproj.LEI-EBC55AA8CD0.Administrator.user

     文件        297  2008-03-06 22:13  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App\stdafx.cpp

     文件        376  2008-03-06 22:13  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App\stdafx.h

     文件        896  2011-10-17 11:26  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App.sln

    ..A..H.     10752  2011-10-27 00:19  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App.suo

     文件      15360  2011-10-23 11:20  OpenGL三茶壶三光源(光源绕着茶壶旋转)\Teapot_Release.exe

     文件        404  2011-11-09 20:35  OpenGL三茶壶三光源(光源绕着茶壶旋转)\操作说明_ReadMe.txt

     目录          0  2011-11-09 20:32  OpenGL三茶壶三光源(光源绕着茶壶旋转)\OpenGL_App

     目录          0  2011-11-09 20:33  OpenGL三茶壶三光源(光源绕着茶壶旋转)

----------- ---------  ---------- -----  ----

               207646                    12


评论

共有 条评论