资源简介
简单的OpenGL实例,基于GLUT库c语言实现,画出一个立方体,在六个面贴上纹理,初学者可以看看
代码片段和文件信息
#define GLUT_DISABLE_ATEXIT_HACK
#if defined(__APPLE__)
#include
#else
#include
#include “GL/glut.h“
#endif
const int width = 800;
const int height = 600;
GLfloat cubic_size = 1.0f;
GLfloat xRotation = 0.0f yRotation = 0.0f;
const GLfloat rotSpeed = 64.0;
bool bLButtonDown = false;
GLint lastLx lastLy;
GLuint iTexture[]={000000};
const GLfloat lightAmbient[] = {0.5f 0.5f 0.5f 1.0f};
const GLfloat lightDiffuse[] = {1.0f 1.0f 1.0f 1.0f};
const GLfloat lightSpecular[] = {1.0f 1.0f 1.0f 1.0f};
const GLfloat lightPosition[] = {1.0f 1.0f 2.0f 1.0f};
const GLfloat MatAmbient[] = {0.192250 0.192250 0.192250 1.000000};//环境反射
const GLfloat MatDiffuse[] = {0.507540 0.507540 0.507540 1.000000};//漫反射
const GLfloat MatSpecular[] = {0.508273 0.508273 0.508273 1.000000};//镜面反射
const GLfloat MatShineness = 21.200001;
// need to define if gl.h version < 1.2.
#ifndef GL_LIGHT_MODEL_COLOR_CONTROL
#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8
#endif
#ifndef GL_SEPARATE_SPECULAR_COLOR
#define GL_SEPARATE_SPECULAR_COLOR 0x81FA
#endif
void init()
{
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
// set the texture
AUX_RGBImageRec *image[6];
image[0] = auxDIBImageLoad(“woodbox.bmp“);
image[1] = auxDIBImageLoad(“pattern.bmp“);
image[2] = auxDIBImageLoad(“hrt-stone.bmp“);
image[3] = auxDIBImageLoad(“stone.bmp“);
image[4] = auxDIBImageLoad(“diamond_plate_texture.bmp“);
image[5] = auxDIBImageLoad(“gray.bmp“);
for(int i=0; i<6;i++)
{
if (image[6] != NULL) {
glPixelStorei(GL_UNPACK_ALIGNMENT 1);
glGenTextures(6 &iTexture[i]);
glBindTexture(GL_TEXTURE_2D iTexture[i]);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MIN_FILTERGL_LINEAR);
glTexParameteri(GL_TEXTURE_2DGL_TEXTURE_MAG_FILTERGL_LINEAR);
glTexImage2D(GL_TEXTURE_2D 0 GL_RGB image[i]->sizeX image[i]->sizeY 0
GL_RGB GL_UNSIGNED_BYTE image[i]->data);
//glTexEnvf(GL_TEXTURE_ENV GL_TEXTURE_ENV_MODE GL_DECAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST);
glEnable(GL_TEXTURE_2D);
free(image[i]->data);
free(image[i]);
}
}
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0 GL_AMBIENT lightAmbient);
glLightfv(GL_LIGHT0 GL_DIFFUSE lightDiffuse);
glLightfv(GL_LIGHT0 GL_SPECULAR lightSpecular);
glLightfv(GL_LIGHT0 GL_POSITION lightPosition);
glMaterialfv(GL_FRONT GL_AMBIENT MatAmbient);
glMaterialfv(GL_FRONT GL_DIFFUSE MatDiffuse);
glMaterialfv(GL_FRONT GL_SPECULAR MatSpecular);
glMaterialf(GL_FRONT GL_SHININESS MatShineness);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);
glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL GL_SEPARATE_SPECULAR_COLOR);
}
/* Draw the window - this is where all the GL actions are */
void
display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glPushMa
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 786486 2013-11-20 13:52 Glut_立方体纹理\Debug\diamond_plate_texture.bmp
文件 221184 2013-09-23 16:43 Glut_立方体纹理\Debug\glut32.dll
文件 28728 2013-09-23 16:43 Glut_立方体纹理\Debug\glut32.lib
文件 217414 2015-12-01 14:07 Glut_立方体纹理\Debug\gray.bmp
文件 233547 2015-12-01 17:04 Glut_立方体纹理\Debug\HelloGlut.exe
文件 368084 2015-12-01 17:04 Glut_立方体纹理\Debug\HelloGlut.ilk
文件 25982 2015-12-01 17:04 Glut_立方体纹理\Debug\HelloGlut.obj
文件 3684572 2015-11-30 19:14 Glut_立方体纹理\Debug\HelloGlut.pch
文件 623616 2015-12-01 17:04 Glut_立方体纹理\Debug\HelloGlut.pdb
文件 1966134 2013-11-20 13:24 Glut_立方体纹理\Debug\hrt-stone.bmp
文件 232374 2015-12-01 14:11 Glut_立方体纹理\Debug\leather.bmp
文件 2359350 2013-11-20 13:25 Glut_立方体纹理\Debug\pattern.bmp
文件 145254 2015-12-01 14:11 Glut_立方体纹理\Debug\stone.bmp
文件 222208 2015-12-01 17:04 Glut_立方体纹理\Debug\vc60.idb
文件 77824 2015-12-01 17:04 Glut_立方体纹理\Debug\vc60.pdb
文件 66614 1999-09-25 20:19 Glut_立方体纹理\Debug\woodbox.bmp
文件 154054 2015-12-01 14:11 Glut_立方体纹理\Debug\yellow.bmp
文件 786486 2013-11-20 13:52 Glut_立方体纹理\diamond_plate_texture.bmp
文件 62175 1999-02-08 13:11 Glut_立方体纹理\GL\fgl.h
文件 7483 1999-02-08 13:11 Glut_立方体纹理\GL\fglu.h
文件 10473 1999-02-08 13:11 Glut_立方体纹理\GL\fglut.h
文件 5287 1999-02-08 13:11 Glut_立方体纹理\GL\glsmap.h
文件 27670 2000-12-13 00:22 Glut_立方体纹理\GL\glut.h
文件 4190 1999-02-16 10:55 Glut_立方体纹理\GL\glutf90.h
文件 9119 2000-12-12 23:07 Glut_立方体纹理\GL\tube.h
文件 221184 2013-09-23 16:43 Glut_立方体纹理\glut32.dll
文件 28728 2013-09-23 16:43 Glut_立方体纹理\glut32.lib
文件 217414 2015-12-01 14:07 Glut_立方体纹理\gray.bmp
文件 7164 2015-12-01 17:04 Glut_立方体纹理\HelloGlut.cpp
文件 4352 2013-11-20 18:46 Glut_立方体纹理\HelloGlut.dsp
............此处省略20个文件信息
- 上一篇:自己做的打地鼠小游戏
- 下一篇:C++做的一个聊天室程序
相关资源
- MFC实现dem的读取与现实
- VC++ OpenGL三维地形漫游
- OpenGL实现三维地形实时动态显示
- VC++中Opengl实现建筑物虚拟漫游
- OpenGL 建筑物漫游
- 用OpenGL实现球面纹理
- 用opengl做的3D教室漫游程序
- 老何炸飞机源代码
- 《Visual C++ OpenGL DirectX三维动画编程宝
- opengl做的迷宫游戏,基于C++
- opengl实现漫游
- VC++雷达模拟程序
- XYZ和STL文件MFC显示
- 简单的OpenGL 3D场景
- OpenGL开发的二维坦克大战游戏,小时
- 最好的CS游戏opengl、C++实现
- c++基于OpenGL的游戏源代码
- opengl c++读取obj文件
- Nehe的OpenGL教程电子书(chm格式)中文
- 三维建筑物漫游程序 opengl
- MFC+OpenGL实现3ds模型导入
- 使用OpenGL绘制圆锥和和圆柱 C++实现
- opengl实现动画
- cpp-Craft使用现代OpenGL用C语言编写的一
- 基于vc6.0的OpenGL小动画代码
- OPENGL光线跟踪算法
- opengl简单的阴影贴图
- B样条曲线生成算法,用VC++加OpenGL写的
- 计算机图形学基于opengl图形变换源代
- 3D图形旋转
评论
共有 条评论