资源简介
使用OpenGL实现的3D场景和模型导入,这里有点像游戏的3d界面,但是是一个低配版,里面有exe可以直接打开,也有源码
代码片段和文件信息
#ifdef _WINDOWS
#include
#endif
#include “glee.h“
#include
#include “CGfxOpenGL.h“
#include
extern long windowHeight;
extern long windowWidth;
const char heightmapFilename[] = “heightmap.raw“;
const float EYE_HEIGHT = 40.0f;
const float TERRAIN_HEIGHT_SCALE = 0.4f;
const float TERRAIN_MAX_HEIGHT = 256 * TERRAIN_HEIGHT_SCALE;
const float CREATURE_MIN_DISTANCE = 140.0f;
const float CREATURE_SCALE = TERRAIN_SCALE * 0.9f;
// returns a number ranging from -1.0 to 1.0
#define FRAND() (((float)rand()-(float)rand())/RAND_MAX)
bool SphereInFrustum(sphere_t sphere frustum_t frustum)
{
GLfloat dist;
for (int i = 0; i < 6; ++i)
{
dist = frustum.planes[i].A * sphere.center.x +
frustum.planes[i].B * sphere.center.y +
frustum.planes[i].C * sphere.center.z +
frustum.planes[i].D;
if (dist <= -sphere.radius)
return false;
}
return true;
}
CGfxOpenGL::CGfxOpenGL()
{
m_terrain = NULL;
m_terrainUVs = NULL;
m_terrainIndices = NULL;
m_terrainColors = NULL;
m_angle = 0.0;
m_rotateRight = false;
m_rotateLeft = false;
m_useCulling = true;
}
CGfxOpenGL::~CGfxOpenGL()
{
}
bool CGfxOpenGL::Init()
{
GLeeInit();
glLineWidth(3.0);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
InitializeTerrain();
InitializeCreatures();
CTargaImage image;
image.Load(“grass.tga“);
glGenTextures(1 &m_grassTexture);
glBindTexture(GL_TEXTURE_2D m_grassTexture);
gluBuild2DMipmaps(GL_TEXTURE_2D GL_RGB image.GetWidth() image.GetHeight() GL_RGB GL_UNSIGNED_BYTE image.GetImage());
image.Release();
m_skybox.Initialize(5.0);
m_skybox.LoadTextures(“skybox/up.tga“ “skybox/dn.tga“ “skybox/ft.tga“ “skybox/bk.tga“ “skybox/lt.tga“ “skybox/rt.tga“);
return true;
}
bool CGfxOpenGL::Shutdown()
{
delete [] m_terrain;
m_terrain = NULL;
delete [] m_terrainUVs;
m_terrainUVs = NULL;
delete [] m_terrainColors;
m_terrainColors = NULL;
delete [] m_terrainIndices;
m_terrainIndices = NULL;
return true;
m_skybox.Release();
glDeleteTextures(1 &m_grassTexture);
}
void CGfxOpenGL::SetupProjection(int width int height)
{
if (height == 0) // don‘t want a divide by zero
{
height = 1;
}
glViewport(0 0 width height); // reset the viewport to new dimensions
glMatrixMode(GL_PROJECTION); // set projection matrix current matrix
glLoadIdentity(); // reset projection matrix
// calculate aspect ratio of window
gluPerspective(45.0f (GLfloat)width/(GLfloat)height 2.0f 3000.0f);
glMatrixMode(GL_MODELVIEW); // set modelview matrix
glLoadIdentity(); // reset modelview matrix
m_windowWidth = width;
m_windowHeight = height;
}
void CGfxOpenGL::Prepare(float dt)
{
if (m_rotateRight)
m_angle += dt * ROTATION_SPEED;
else if (m_rotateLeft)
m_angle -= dt * ROTATION_SPE
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-11 11:42 FrustumCulling\
文件 11370 2017-06-11 11:34 FrustumCulling\CGfxOpenGL.cpp
文件 1652 2004-02-09 14:23 FrustumCulling\CGfxOpenGL.h
文件 7038 2004-02-09 14:23 FrustumCulling\CTargaImage.cpp
文件 2241 2004-02-09 14:23 FrustumCulling\CTargaImage.h
目录 0 2017-06-11 11:37 FrustumCulling\Debug\
文件 83229 2017-06-11 11:36 FrustumCulling\Debug\CGfxOpenGL.obj
文件 0 2017-06-11 11:37 FrustumCulling\Debug\CGfxOpenGL.sbr
文件 22057 2017-06-11 11:36 FrustumCulling\Debug\CTargaImage.obj
文件 0 2017-06-11 11:37 FrustumCulling\Debug\CTargaImage.sbr
文件 2778112 2017-06-11 11:37 FrustumCulling\Debug\FrustumCulling.bsc
文件 421991 2017-06-11 11:36 FrustumCulling\Debug\FrustumCulling.exe
文件 835532 2017-06-11 11:36 FrustumCulling\Debug\FrustumCulling.ilk
文件 3515508 2017-06-11 11:36 FrustumCulling\Debug\FrustumCulling.pch
文件 1229824 2017-06-11 11:36 FrustumCulling\Debug\FrustumCulling.pdb
文件 489448 2017-06-11 11:36 FrustumCulling\Debug\GLee.obj
文件 0 2017-06-11 11:37 FrustumCulling\Debug\GLee.sbr
文件 28677 2017-06-11 11:36 FrustumCulling\Debug\MD2.obj
文件 0 2017-06-11 11:37 FrustumCulling\Debug\MD2.sbr
文件 62216 2017-06-11 11:36 FrustumCulling\Debug\Skybox.obj
文件 0 2017-06-11 11:37 FrustumCulling\Debug\Skybox.sbr
文件 214016 2017-06-11 11:37 FrustumCulling\Debug\vc60.idb
文件 159744 2017-06-11 11:36 FrustumCulling\Debug\vc60.pdb
文件 59128 2017-06-11 11:36 FrustumCulling\Debug\winmain.obj
文件 0 2017-06-11 11:37 FrustumCulling\Debug\winmain.sbr
文件 4759 2017-06-11 11:42 FrustumCulling\FrustumCulling.dsp
文件 551 2004-02-09 14:23 FrustumCulling\FrustumCulling.dsw
文件 147456 2004-02-09 14:23 FrustumCulling\FrustumCulling.exe
文件 345088 2017-06-11 11:42 FrustumCulling\FrustumCulling.ncb
文件 48640 2017-06-11 11:42 FrustumCulling\FrustumCulling.opt
文件 2113 2017-06-11 11:37 FrustumCulling\FrustumCulling.plg
............此处省略115个文件信息
- 上一篇:三十多个天空盒图片
- 下一篇:人工智能哈工大-赵铁军-2009 ppt
相关资源
- 三十多个天空盒图片
- 最简单的视音频播放 1.1
- 最简单的视音频播放
- glut库源码
- openGl绘制带颜色的三角形
- OpenGl三维建模源代码
- OpenGL函数与范例解析手册(中文).
- OpenGL三维图形系统开发与实用技术
- OpenGL超级宝典第六版 英文
- OpenGL消隐和光照
- opengl写的一个自行车
- OpenTK 安装文件
- opengl2048游戏源码
- OpenGL程序绘制贝塞尔曲线
- Learning Game Physics with Bullet Physics and
- 交通自动化控制界面 - 智能交通灯演
- OpenGLTexture
- OpenGLPro12
- openGL写的飞机动态射击模型
- 太阳系仿真源代码,opengl模型太阳系
- OpenGL 的 glut glaux
- 计算机图形学课程设计--OpenGL--太阳、
- Windows SDK 环境下 OpenGL实现
- OPenGL实现的虚拟校园环境漫游系统
- OpenGL函数与范例解析手册(中文)带
- Qt Creator中的3D绘图及动画教程(参照
- OpenGL依赖库
- 用VC和opengl开发的模仿cs的小游戏
- 二维/三维图形的几何变换基于OpenGL
- Qt下 用OpenGL 实现的模拟太阳系
评论
共有 条评论