-
大小: 6.23MB文件类型: .zip金币: 1下载: 0 次发布日期: 2023-11-08
- 语言: 其他
- 标签: opengl reflection texture
资源简介
Simulating planar reflection using two-pass rendering and texture mapping
1. There ‘s a table with flat rectangular semi-reflective table-top in the 3D scene
2. On/Around the table are some 3D objects. All of these objects are texture-mapped (mipmapping).
3. There is a point light and a single directional light in the scene.
4. There is one rotating triangle floating in the air, casting a shadow on the table, walls and other objects.
5. The program allows the user to move the viewpoint and view direction.
代码片段和文件信息
#include
#include
#include
#include
#include
#include “glaux.h“
#define CheckedMalloc(mem_size) _CheckedMalloc( (mem_size) __FILE__ __LINE__ )
inline void *_CheckedMalloc( size_t size const char *srcfile int lineNum )
// same as malloc() but checks for out-of-memory.
{
void *p = malloc( size );
//if ( p == NULL ) ShowFatalError( srcfile lineNum “Cannot allocate memory.“ );
return p;
}
GLfloat angle =0;
GLfloat m_xAngle m_yAngle m_zAngle;
GLfloat m_xPos m_yPos m_zPos;
GLfloat height=3;
static GLfloat LightAmb[] = {0.7f 0.7f 0.7f 1.0f}; // Ambient Light
static GLfloat LightDif[] = {1.0f 1.0f 1.0f 1.0f}; // Diffuse Light
static GLfloat LightPos[] = {4.0f 4.0f 6.0f 1.0f}; // Light Position
static const char outputTestFilename[]=“test.out“;
GLuint texture[6];
AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image
{
FILE *File=NULL; // File Handle
if (!Filename) // Make Sure A Filename Was Given
{
return NULL; // If Not Return NULL
}
File=fopen(Filename“r“); // Check To See If The File Exists
if (File) // Does The File Exist?
{
fclose(File); // Close The Handle
return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
}
return NULL; // If Load Failed Return NULL
}
void loadtextures ()
{
int Status=FALSE; // Status Indicator
int loop;
AUX_RGBImageRec *TextureImage[6]; // Create Storage Space For The Textures
memset(TextureImage0sizeof(void *)*3); // Set The Pointer To NULL
if ((TextureImage[0]=LoadBMP(“Data/front.bmp“)) &&// Load The Floor Texture
(TextureImage[1]=LoadBMP(“Data/left.bmp“)) && // Load the Light Texture
(TextureImage[2]=LoadBMP(“Data/back.bmp“)) &&
(TextureImage[3]=LoadBMP(“Data/floor.bmp“))&&
(TextureImage[4]=LoadBMP(“Data/right.bmp“))&&
(TextureImage[5]=LoadBMP(“Data/teapot.bmp“))) // Load the Wall Texture
{
Status=TRUE; // Set The Status To TRUE
glGenTextures(6 &texture[0]); // Create The Texture
for (loop=0; loop<6; loop++) // Loop Through 5 Textures
{
glBindTexture(GL_TEXTURE_2D texture[loop]);
glTexImage2D(GL_TEXTURE_2D 0 3 TextureImage[loop]->sizeX TextureImage[loop]->sizeY 0 GL_RGB GL_UNSIGNED_BYTE TextureImage[loop]->data);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_LINEAR);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_LINEAR);
gluBuild2DMipmaps( GL_TEXTURE_2D 3 TextureImage[loop]->sizeX TextureImage[loop]->sizeY GL_RGB GL_UNSIGNED_BYTETextureImage[loop]->data );
}
for (loop=0; loop<6; loop++) // Loop Through 5 Textures
{
if (TextureImage[loop]) // If Texture Exists
{
if (TextureImage[loop]->data) // If Texture Image Exists
{
free(TextureImage[loop]->data); // Free The Texture Image Memory
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2009-05-12 13:39 task1\
目录 0 2009-03-13 15:04 task1\Data\
文件 196662 2009-01-30 10:38 task1\Data\back.bmp
文件 49206 2009-02-01 19:52 task1\Data\floor.bmp
文件 196662 2009-01-30 10:43 task1\Data\front.bmp
文件 196662 2009-01-30 10:46 task1\Data\left.bmp
文件 196662 2009-01-30 10:44 task1\Data\right.bmp
文件 196662 1998-09-10 04:06 task1\Data\teapot.BMP
文件 44032 2009-02-16 16:55 task1\Data\Thumbs.db
目录 0 2009-04-07 16:45 task1\Debug\
文件 8658 2009-04-07 16:45 task1\Debug\BuildLog.htm
文件 66 2009-04-07 16:45 task1\Debug\mt.dep
文件 556032 2009-04-07 16:45 task1\Debug\Pond.exe
文件 406 2009-04-07 15:47 task1\Debug\Pond.exe.em
文件 472 2009-04-07 15:47 task1\Debug\Pond.exe.em
文件 381 2009-04-07 16:45 task1\Debug\Pond.exe.intermediate.manifest
文件 1497540 2009-04-07 16:45 task1\Debug\Pond.ilk
文件 80245 2009-04-07 16:45 task1\Debug\Pond.obj
文件 2616320 2009-04-07 16:45 task1\Debug\Pond.pdb
文件 347136 2009-04-07 16:45 task1\Debug\vc90.idb
文件 110592 2009-04-07 16:45 task1\Debug\vc90.pdb
文件 12024 1998-04-24 00:00 task1\GLAUX.H
文件 1312394 1998-05-13 00:00 task1\GLAUX.LIB
文件 12648 1998-05-13 00:00 task1\GLU32.LIB
文件 21440 2003-11-07 18:57 task1\GLUT.H
文件 18316 2009-04-07 16:45 task1\Pond.cpp
文件 533 2009-01-29 11:12 task1\Pond.dsw
文件 555008 2009-02-19 10:31 task1\Pond.exe
文件 14552064 2009-04-09 15:49 task1\Pond.ncb
文件 878 2009-02-16 16:15 task1\Pond.sln
文件 9728 2009-04-09 15:49 task1\Pond.suo
............此处省略5个文件信息
相关资源
- OpenGL球体绘制与球体贴图
- 使用OpenGL绘制Bezier曲线
- OpenGL卡通人脸绘制
- 电子科大UESTC_OPENGL三维图形程序设计
- DirectX 材质 模型 工具汉化版
- 图形学,利用OpenGL函数进行鼠标、键
- opengl 读取与显示obj文件
- GLFW-3.2.bin.WIN32
- OpenGL实现画球体算法的源码
- OPenGL实现 3DS卫星地球
- 实验一 OpenGL 程序设计基础
- OpenGL Shading Language 橙宝书 源代码 De
- Opengl实现樱花飞舞贴图
- NeHe opengl教程48课全中文pdf,英文pdf,
- opengl实现太阳系动态模型,地球,月
- 计算机图形学 OpenGL实验源码+实验文档
- OpenNI获取三维点云并用OpenGL显示可旋
- glfw-3.2.1源码(需要自行编译)
- 计算机图形学的设计作业。。OpenGl源
- OpenGL绘制3D企鹅
- opengl 实现的机器人行走
- OpenGL 纹理 二重纹理
- Bezier曲面 Coons曲面 B样条曲面绘制(用
- Opengles2.0地球
- 计算机图形学-基于OpenGL的3D迷宫漫游
- 大量Opengl
- Opengl 太阳系
- 用opengl绘制的兔子
- 基于OpenGL的描点绘制Bezier曲线
- opengl天空盒的效果源代码
评论
共有 条评论