• 大小: 3.14MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-15
  • 语言: C/C++
  • 标签: C++  OPENGL  光照  鼠标  

资源简介

课堂作业,C++开发的OPENGL立方体,有光照,支持鼠标拖拽和键盘按键响应,希望对大家有帮助

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include 

HWND hWnd;
HDC hDC;
HGLRC hRC=NULL; //定义渲染环境
HINSTANCE hInstance; //得到程序的例子

RECT rect;

int sw = 640;
int sh = 480;

bool fullscreen  = 1;

GLfloat aspect;

GLfloat xrot; // X轴旋转
GLfloat yrot; // Y轴旋转
GLfloat xspeed; // X轴旋转速度
GLfloat yspeed; // Y轴旋转速度
GLfloat z=-5.0f; // 移入屏幕的深度
int     LastXPosLastYPos;
bool IsLBDown;

bool light; //光源-开/关
bool lp; //L键是否按下? 
GLfloat LightAmbient[]= { 0.5f 0.5f 0.5f 1.0f }; //环境光的值
GLfloat LightDiffuse[]= { 1.0f 1.0f 1.0f 1.0f }; //散射光的值
GLfloat LightPosition[]= { 0.0f 0.0f 2.0f 1.0f }; //光照位置

GLuint texture[6]; //纹理的存储空间

#pragma comment( lib “opengl32.lib“ ) // 链接时使用OpenGL32.lib
#pragma comment( lib “glu32.lib“ ) // 链接时使用GLu32.lib 
#pragma comment( lib “glaux.lib“ ) // 链接时使用GLaux.lib

AUX_RGBImageRec *TextureImage[6]; //为纹理创建存储空间

//memset(TextureImage0sizeof(void *)*1);            //将指针设为NULL

AUX_RGBImageRec *LoadBMP(char *Filename) // 读取位图图象
{
FILE *File=NULL; // 文件句柄

if (!Filename) // 确定文件名已给出
{
return NULL; // 如果文件名未给出则返回NULL
}

File=fopen(Filename“r“); // 检测文件是否存在

if (File) // 文件是否存在?
{
fclose(File); // 关闭文件
return auxDIBImageLoad(Filename); // 读取位图并返回一个指针
}

return NULL; //如果调用文件失败则返回NULL
}

int LoadGLTextures(int ichar *FileName) //调用Bitmap并转换成纹理
{
int Status=FALSE; //状态确定

//读取位图,检查错误。如果位图不存在则退出
if (TextureImage[i]=LoadBMP(FileName))
{
Status=TRUE; //将Status设为TRUE

glGenTextures(1 &texture[i]); //创建一个纹理


//创建经过MipMapped的纹理
glBindTexture(GL_TEXTURE_2D texture[i]);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_LINEAR);     //线形过滤
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_LINEAR_MIPMAP_NEAREST); //MipMapped过滤
gluBuild2DMipmaps(GL_TEXTURE_2D 3 TextureImage[i]->sizeX TextureImage[i]->sizeY GL_RGB GL_UNSIGNED_BYTE TextureImage[i]->data);
}

if (TextureImage[i]) //纹理是否存在
{
if (TextureImage[i]->data) //纹理图象是否存在
{
free(TextureImage[i]->data); //释放纹理图象所占用内存
}

free(TextureImage[i]); //释放图象结构
}

return Status; //返回Status的值
}

void SceneInit(int w int h)
{
LoadGLTextures(0“pictures/鸣人1.bmp“);
LoadGLTextures(1“pictures/佐助.bmp“);
LoadGLTextures(2“pictures/卡卡西.bmp“);
LoadGLTextures(3“pictures/李洛克.bmp“);
LoadGLTextures(4“pictures/我爱罗.bmp“);
LoadGLTextures(5“pictures/鸣人2.bmp“);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH); //允许平滑着色
glClearColor( 0.0 0.0 1.0 0.5 );
glClearDepth(1.0f); //设置深度缓冲区
glEnable(GL_DEPTH_TEST);                            //允许深度测试
glDepthFunc(GL_LEQUAL); //深度测试的类型
glHint(GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST);  //极好的透视计算

glLightfv(GL_

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

     文件      12952  2007-12-11 12:44  鼠标互动与光照\MouseAndLight\MouseAndLight.cpp

     文件       4063  2007-11-05 23:32  鼠标互动与光照\MouseAndLight\MouseAndLight.dsp

     文件        551  2007-11-05 21:42  鼠标互动与光照\MouseAndLight\MouseAndLight.dsw

     文件      53760  2007-12-11 12:46  鼠标互动与光照\MouseAndLight\MouseAndLight.opt

     文件       1246  2007-12-11 12:46  鼠标互动与光照\MouseAndLight\MouseAndLight.plg

     文件        359  2007-11-06 20:00  鼠标互动与光照\MouseAndLight\程序说明.txt

     文件     196662  2007-11-06 17:24  鼠标互动与光照\MouseAndLight\pictures\佐助.bmp

     文件     196662  2007-11-06 17:25  鼠标互动与光照\MouseAndLight\pictures\卡卡西.bmp

     文件     196662  2007-11-06 17:24  鼠标互动与光照\MouseAndLight\pictures\我爱罗.bmp

     文件     196662  2007-11-06 17:23  鼠标互动与光照\MouseAndLight\pictures\李洛克.bmp

     文件     196662  2007-11-06 17:21  鼠标互动与光照\MouseAndLight\pictures\鸣人1.bmp

     文件     196662  2007-11-06 17:25  鼠标互动与光照\MouseAndLight\pictures\鸣人2.bmp

     文件     547328  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\MouseAndLight.exe

     文件      77824  2007-12-11 12:46  鼠标互动与光照\MouseAndLight\Debug\vc60.pdb

     文件      10632  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\BuildLog.htm

     文件        406  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\MouseAndLight.exe.embed.manifest

     文件     102400  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\vc90.pdb

     文件      56674  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\MouseAndLight.obj

     文件        472  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\MouseAndLight.exe.embed.manifest.res

     文件    2542592  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\MouseAndLight.pdb

     文件        381  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\MouseAndLight.exe.intermediate.manifest

     文件         67  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\Debug\mt.dep

     文件    8014848  2008-05-27 15:18  鼠标互动与光照\MouseAndLight\MouseAndLight.ncb

     文件       5596  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\MouseAndLight.vcproj

     文件        891  2008-05-27 15:14  鼠标互动与光照\MouseAndLight\MouseAndLight.sln

    ..A..H.      7168  2008-05-27 15:18  鼠标互动与光照\MouseAndLight\MouseAndLight.suo

     文件       1427  2008-05-27 15:18  鼠标互动与光照\MouseAndLight\MouseAndLight.vcproj.LENOVO-03045314.Administrator.user

     目录          0  2008-05-24 03:20  鼠标互动与光照\MouseAndLight\pictures

     目录          0  2008-05-24 03:20  鼠标互动与光照\MouseAndLight\Debug

     目录          0  2008-05-24 03:20  鼠标互动与光照\MouseAndLight

............此处省略4个文件信息

评论

共有 条评论