资源简介

绘制一个具有真实感的三维场景,其中含有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个文件信息

评论

共有 条评论