• 大小: 33.67MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-28
  • 语言: 其他
  • 标签: openGL  

资源简介

这是我用openGL绘制的虚拟教室,有各种教室必备物品,代码已测试通过,能实现漫游功能,含可执行程序和源码

资源截图

代码片段和文件信息

#include
#include
#include
#include 
#include 
/*******************************定义程序中所用的常数变量******************************************/
GLfloat light_position1[]={028-201.0};
GLfloat model_ambient[]={0.05f0.05f0.05f1.0f};
GLfloat mat_specular[]={0.81.01.01.0};
GLfloat mat_shininess[]={5.0};
GLfloat mat_ambient[]={0.10.10.11};
GLfloat white_light[]={1.01.01.01.0};
GLfloat light[]={1.01.01.01};
GLfloat light_position0[]={028201.0};
GLfloat no_mat[]= {0.0f 0.0f 0.0f 1.0f};
GLfloat mat_diffuse1[]= {0.1f 0.5f 0.8f 1.0f};
GLfloat no_shininess[]= {0.0f};
GLfloat sound[]={0.90.90.91};
GLint WinWidth;
GLint WinHeight;

/************************定义视点结构*********************************************************/
typedef struct EyePoint
{
GLfloat x;
GLfloat y;
GLfloat z;
}EyePoint;
EyePoint  myEye;
EyePoint    vPoint;
GLfloat pro_up_down=29.0f;
GLfloat vAngle=0;
/****************************载入位图作为纹理的相关函数************************************/
#define BMP_Header_Length 54
void grab(void)

{

FILE* pDummyFile; FILE* pWritingFile; 
GLubyte* pPixelData;
GLubyte BMP_Header[BMP_Header_Length]; 
GLint    i j;
GLint    PixelDataLength;
// 计算像素数据的实际长度

i = WinWidth * 3;  // 得到每一行的像素数据长度
while( i%4 != 0 )      // 补充数据,直到 i 是的倍数
++i;                       // 本来还有更快的算法,
PixelDataLength = i * WinHeight;// 但这里仅追求直观,对速度没有太高要求
    pPixelData = (GLubyte*)malloc(PixelDataLength);// 分配内存和打开文件
    if( pPixelData == 0 )
exit(0);
pDummyFile = fopen(“dummy.bmp“ “rb“);
if( pDummyFile == 0 )
exit(0);
pWritingFile = fopen(“grab.bmp“ “wb“);
if( pWritingFile == 0 )
exit(0);
glPixelStorei(GL_UNPACK_ALIGNMENT 4); 
glReadPixels(0 0 WinWidth WinHeightGL_BGR_EXT GL_UNSIGNED_BYTE pPixelData);
// 把 dummy.bmp 的文件头复制为新文件的文件头

fread(BMP_Header sizeof(BMP_Header) 1 pDummyFile); 
fwrite(BMP_Header sizeof(BMP_Header) 1 pWritingFile); 
fseek(pWritingFile 0x0012 SEEK_SET);
i = WinWidth; 
j = WinHeight;
fwrite(&i sizeof(i) 1 pWritingFile);
fwrite(&j sizeof(j) 1 pWritingFile);
fseek(pWritingFile 0 SEEK_END);
fwrite(pPixelData PixelDataLength 1 pWritingFile);
fclose(pDummyFile); fclose(pWritingFile); free(pPixelData);
}

//判断一个数是否是2的整数次方
int power_of_two(int n)
{
if( n <= 0 )
return 0;
    return (n & (n-1)) == 0;
}
/****************************载入一副位图作为纹理,返回的是纹理编号**********************************************/
GLuint load_texture(const char* file_name)
{
    GLint width height total_bytes; 
GLubyte* pixels = 0;
GLint last_texture_ID=0;
GLuint texture_ID = 0;
// 打开文件,如果失败,返回
    FILE* pFile = fopen(file_name “rb“);
if( pFile == 0 )
return 0;
// 读取文件中图象的宽度和高度
fseek(pFile 0x0012 SEEK_SET);
fread(&width 4 1 pFile);
fread(&height 4 1 pFile);
fseek(pFile BMP_Header_Length SEEK_SET);
// 计算每行像素所占字节数,并根据此数据计算总像素字节数
{
    GLint line_bytes = width * 3;
wh

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

     文件   39386934  2014-12-05 18:03  虚拟教室_张琦_22012206\可执行部分\airconditionback.bmp

     文件     180150  2014-12-05 18:43  虚拟教室_张琦_22012206\可执行部分\airconditionfront.bmp

     文件      98358  2007-12-09 14:41  虚拟教室_张琦_22012206\可执行部分\backwall.bmp

     文件     481338  2014-12-08 18:44  虚拟教室_张琦_22012206\可执行部分\blackboard.bmp

     文件     208614  2014-12-11 20:28  虚拟教室_张琦_22012206\可执行部分\ceiling.bmp

     文件      90014  2014-12-13 11:21  虚拟教室_张琦_22012206\可执行部分\clock.bmp

     文件     196662  2014-11-29 20:23  虚拟教室_张琦_22012206\可执行部分\desk.bmp

     文件   39386934  2014-12-01 21:30  虚拟教室_张琦_22012206\可执行部分\door.bmp

     文件     145254  2014-12-08 19:49  虚拟教室_张琦_22012206\可执行部分\floor.bmp

     文件     145254  2014-12-08 19:47  虚拟教室_张琦_22012206\可执行部分\gaodi.bmp

     文件     217183  2014-12-13 21:47  虚拟教室_张琦_22012206\可执行部分\Myclassroom.exe

     文件     383096  2007-12-07 13:10  虚拟教室_张琦_22012206\可执行部分\pole.bmp

     文件     389454  2014-12-08 19:52  虚拟教室_张琦_22012206\可执行部分\sdesk.bmp

     文件      33558  2007-12-09 13:42  虚拟教室_张琦_22012206\可执行部分\sound.bmp

     文件    1407654  2014-12-08 20:27  虚拟教室_张琦_22012206\可执行部分\window.bmp

     文件   39386934  2014-12-05 18:03  虚拟教室_张琦_22012206\工程部分\airconditionback.bmp

     文件     180150  2014-12-05 18:43  虚拟教室_张琦_22012206\工程部分\airconditionfront.bmp

     文件      98358  2007-12-09 14:41  虚拟教室_张琦_22012206\工程部分\backwall.bmp

     文件     353110  2014-12-13 13:43  虚拟教室_张琦_22012206\工程部分\blackboard.bmp

     文件     208614  2014-12-11 20:28  虚拟教室_张琦_22012206\工程部分\ceiling.bmp

     文件      90014  2014-12-13 11:21  虚拟教室_张琦_22012206\工程部分\clock.bmp

     文件     217183  2014-12-13 21:47  虚拟教室_张琦_22012206\工程部分\Debug\Myclassroom.exe

     文件     329728  2014-12-13 21:47  虚拟教室_张琦_22012206\工程部分\Debug\Myclassroom.ilk

     文件      77534  2014-12-13 21:47  虚拟教室_张琦_22012206\工程部分\Debug\Myclassroom.obj

    I.A....   3705128  2014-12-13 21:47  虚拟教室_张琦_22012206\工程部分\Debug\Myclassroom.pch

     文件     517120  2014-12-13 21:47  虚拟教室_张琦_22012206\工程部分\Debug\Myclassroom.pdb

     文件     140288  2014-12-13 21:48  虚拟教室_张琦_22012206\工程部分\Debug\vc60.idb

     文件      77824  2014-12-13 21:47  虚拟教室_张琦_22012206\工程部分\Debug\vc60.pdb

     文件     196662  2014-11-29 20:23  虚拟教室_张琦_22012206\工程部分\desk.bmp

     文件   39386934  2014-12-13 14:42  虚拟教室_张琦_22012206\工程部分\door.bmp

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

评论

共有 条评论