资源简介
绘制一个具有真实感的三维场景,其中含有2个三维物体。具有光照,纹理效果,可实现交互式的场景漫游。使用OpenGL,完成从建模、坐标变换到消隐算法、光照模型、面绘制算法、纹理映射的全部过程。
代码片段和文件信息
#define WIN32_LEAN_AND_MEAN
#include
#include
#include
#include
#include
#include
#include
#pragma comment( lib “opengl32.lib“)
#pragma comment( lib “glu32.lib“)
#pragma comment( lib “glaux.lib“)
#define KEY_DOWN(vk_code)((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
HDC hDC=NULL;
HGLRC hRC=NULL;
HWND hWnd=NULL;
HINSTANCE hInstance;
bool fullscreen = true;
GLfloat speed = 1.0f;
int SCREEN_WIDTH =800;
int SCREEN_HEIGHT =600;
GLuint texture[8]; // 存储纹理
GLfloat MAP_SIZE = 100; //地图的大小
GLfloat theta = 0.0f; //旋转的角度
GLfloat viewUp = 0.0f; //向上和向下看的程度
struct Vector3{
GLfloat x;
GLfloat y;
GLfloat z;
};
Vector3 eyePosition ={0.0f 4.0 0.0f};
Vector3 viewAtPosition ={0.0f 4.0-1.0};
LRESULT CALLBACK WndProc(HWND UINT WPARAM LPARAM);
GLvoid DrawScene();
GLvoid SetViewByMouse();
GLvoid ReSizeGL(GLsizei width GLsizei height)
{
if (height==0)
{
height=1;
}
glViewport(00widthheight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f(GLfloat)width/(GLfloat)height0.1f1000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
AUX_RGBImageRec *LoadBMP(char *Filename)
{
FILE *File=NULL;
if (!Filename)
{
return NULL;
}
File=fopen(Filename“r“);
if (File)
{
fclose(File);
return auxDIBImageLoad(Filename);
}
return NULL;
}
int LoadGLTextures() //写这个函数的时候浪费了最多时间,
//教程上只贴了一个纹理,但是我的纹理有点多,添加多纹理的时候犯了很多错误,在同学的帮助下慢慢改成功了
{
int Status=FALSE;
AUX_RGBImageRec *TextureFloor[1]; // 用来保存纹理数据
AUX_RGBImageRec *TextureRight[1];
AUX_RGBImageRec *TextureLeft[1];
AUX_RGBImageRec *TextureBack[1];
AUX_RGBImageRec *TextureBox11[1];
AUX_RGBImageRec *TextureBox12[1];
AUX_RGBImageRec *TextureBox21[1];
AUX_RGBImageRec *TextureBox22[1];
memset(TextureFloor0sizeof(void *)*1); // 数据内容清零
memset(TextureRight0sizeof(void *)*1);
memset(TextureLeft0sizeof(void *)*1);
memset(TextureBack0sizeof(void *)*1);
memset(TextureBox110sizeof(void *)*1);
memset(TextureBox120sizeof(void *)*1);
memset(TextureBox210sizeof(void *)*1);
memset(TextureBox220sizeof(void *)*1);
//载入位图 并判断成功否
if ((TextureFloor[0]=LoadBMP(“Floor.bmp“))&&(TextureRight[0]=LoadBMP(“Right.bmp“))&&(TextureLeft[0]=LoadBMP(“Left.bmp“))&&(TextureBack[0]=LoadBMP(“Left.bmp“))&&(TextureBox11[0]=LoadBMP(“Box11.bmp“))&&(TextureBox12[0]=LoadBMP(“Box12.bmp“))&&(TextureBox21[0]=LoadBMP(“Box11.bmp“))&&(TextureBox22[0]=LoadBMP(“Box22.bmp“)))
{
Status=TRUE; // 成功
glGenTextures(8 &texture[0]);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 49206 2010-12-23 20:46 计算机图形学代码\Box11.bmp
文件 49206 2010-12-23 20:49 计算机图形学代码\Box12.bmp
文件 49206 2010-12-23 21:38 计算机图形学代码\Box22.bmp
文件 766 2005-05-27 23:59 计算机图形学代码\crosshair.cur
文件 39992 2011-01-17 22:40 计算机图形学代码\Debug\main.obj
文件 880 2011-01-17 21:59 计算机图形学代码\Debug\resource.res
文件 82944 2011-01-17 22:51 计算机图形学代码\Debug\vc60.idb
文件 61440 2011-01-17 22:01 计算机图形学代码\Debug\vc60.pdb
文件 258096 2011-01-17 22:40 计算机图形学代码\Debug\viewingSys.exe
文件 372676 2011-01-17 22:40 计算机图形学代码\Debug\viewingSys.ilk
文件 1926192 2011-01-17 21:59 计算机图形学代码\Debug\viewingSys.pch
文件 582656 2011-01-17 22:01 计算机图形学代码\Debug\viewingSys.pdb
文件 786486 2010-12-23 19:09 计算机图形学代码\floor.bmp
文件 393270 2010-12-23 20:52 计算机图形学代码\Left.bmp
文件 24969 2011-01-17 22:01 计算机图形学代码\main.cpp
文件 1424 2006-04-04 20:25 计算机图形学代码\resource.aps
文件 42 2005-05-28 00:01 计算机图形学代码\resource.rc
文件 393270 2010-12-23 17:28 计算机图形学代码\Right.bmp
文件 4090 2005-05-27 23:59 计算机图形学代码\viewingSys.dsp
文件 545 2005-05-27 17:47 计算机图形学代码\viewingSys.dsw
文件 41984 2011-01-17 22:51 计算机图形学代码\viewingSys.ncb
文件 48640 2011-01-17 22:51 计算机图形学代码\viewingSys.opt
文件 909 2006-04-04 19:21 计算机图形学代码\viewingSys.sln
..A..H. 9728 2006-04-12 20:33 计算机图形学代码\viewingSys.suo
文件 4681 2006-04-04 19:21 计算机图形学代码\viewingSys.vcproj
目录 0 2011-01-17 22:01 计算机图形学代码\Debug
目录 0 2011-07-09 10:22 计算机图形学代码
----------- --------- ---------- ----- ----
5183298 27
............此处省略0个文件信息
相关资源
- 完整太阳系opengl
- 99273910opengl-3d-car.zip
- OpenGL_哆啦A梦环游世界
- 用OPenGl模拟太阳、地球、月球包含纹
- OpenGL小球自由落体弹起
- 基于串口的OpenGL三维坐标绘制
- openGL做的小球三维碰撞检测程序
- OpenGL飞机飞行模拟
- OPENGL写的四面体纹理贴图
- OpenGL 场景漫游
- opengl_shader_鱼眼校正的(demo)
- opengl与QT实现天空盒
- OpenGL程序构造天空和地面
- opengl的OpenGL教程中文版
- VC点云数据显示,OPENGL图像渲染.rar
- openGL实现地球自动围绕太阳转
- 史上最全OpenGL文件安装包
- 第一个3d建模的demo
- OpenGL开发库完整版
- 用openGL实现的3D国际象棋游戏源码
- Opengl写的摩天轮源码
- OpenGL3.3官方文档
- 碰撞检测毕业论文
- OpenGL库文件完整版
- source code for Computer Graphics: Programming
- opengl 实现水波纹
- openGL bunny 画兔子
- opengl glee
- 史上最全OpenGL库文件
- opengl做的飞机模型
评论
共有 条评论