资源简介
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
- 上一篇:微机原理与接口技术期末试题及答案
- 下一篇:ICP+NDT点云配准
相关资源
- 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室内场景的绘制,包括碰撞检测
评论
共有 条评论