资源简介
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点云配准
相关资源
- 10个OpenGL的源码
- vc写的一个游戏里面三维场景漫游
- OpenGL实现的简单游戏引擎
- OpenGL游戏程序设计源码
- glew最新版本glew1.11.0
- OpenGL 火箭
- 天空盒和地面
- 三维场景漫游.zip
- openGL实现的正方体六面贴图
- opengl简易翻牌游戏
- Qt Openglwidget 显示图片纹理贴图
- OpenGL实现三维物体旋转,缩放
- MD5GPU.rar
- OpenGL立方体在世界坐标系中缩放_旋转
- OpenGL ES 2.0 编程指南 中文版.pdf
- openGL实现三维点云显示
- opengl写的趣味3D骰子
- 计算机图形学实验 opengl实现太阳系运
- opengl实现地球围绕太阳转动
- 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
评论
共有 条评论