资源简介
基于C++开发的 opengl从高度图创建地形三维漫游,有三维模型、广告牌技术、喷泉、天空等
代码片段和文件信息
#include
#include
#include
// lib3ds头文件
#include “file.h“
#include “camera.h“
#include “mesh.h“
#include “node.h“
#include “material.h“
#include “matrix.h“
#include “vector.h“
#include “light.h“
#include “config.h“
//#define EXP_NORMAL
void render_node(Lib3dsNode *node);
Lib3dsFile *file;
int meshnum = 0;
const char *name_out = NULL;
int main(int argc char **argv)
{
if(argc<2)
{
puts(“没有指定要转换的文件\n“);
return 0;
}
file=lib3ds_file_load(argv[1]);
name_out = argv[1];
if (!file)
{
printf(“打开 %s 失败\n“ argv[2]);
return 0;
}
Lib3dsNode *p;
for (p=file->nodes; p!=0; p=p->next)
{
render_node(p);
}
lib3ds_file_free(file);
return 0;
}
void render_node(Lib3dsNode *node)
{
ASSERT(file);
{
Lib3dsNode *p;
for (p=node->childs; p!=0; p=p->next)
{
render_node(p);
}
}
if (node->type==LIB3DS_object_NODE)
{
if (strcmp(node->name“$$$DUMMY“)==0)
{
return;
}
if (!node->user.d)
{
Lib3dsMesh *mesh=lib3ds_file_mesh_by_name(file node->name);
ASSERT(mesh);
if (!mesh)
{
return;
}
{
#ifdef EXP_NORMAL
Lib3dsVector *normalL = (Lib3dsVector*)malloc(3*sizeof(Lib3dsVector)*mesh->faces);
lib3ds_mesh_calculate_normals(mesh normalL);
#endif
ASSERT(mesh->points == mesh->texels);
// 输出到的文件
char filename[300];
sprintf(filename “%s_%d.3d“ name_out ++meshnum);
FILE *out = fopen(filename “wb“);
ASSERT(out);
if(!out)
{
printf(“打开 %s 失败\n“ filename);
return;
}
// 顶点数
fwrite(&mesh->points 4 1 out);
// 面数
fwrite(&mesh->faces 4 1 out);
// 顶点数据
for(unsigned i=0; ipoints; ++i)
{
fwrite(mesh->texelL[i] 4*2 1 out);
#ifdef EXP_NORMAL
fwrite(normalL[i] 4*3 1 out);
#endif
fwrite(mesh->pointL[i].pos 4*3 1 out);
}
// 索引数据
for(unsigned p=0; pfaces; ++p)
{
Lib3dsFace *f=&mesh->faceL[p];
/*
Lib3dsMaterial *mat=0;
if (f->material[0])
{
mat=lib3ds_file_material_by_name(file f->material);
}
if (mat)
{
static GLfloat a[4]={0001};
float s;
glMaterialfv(GL_FRONT GL_AMBIENT a);
glMaterialfv(GL_FRONT GL_DIFFUSE mat->diffuse);
glMaterialfv(GL_FRONT GL_SPECULAR mat->specular);
s = pow(2 10.0*mat->shininess);
if (s>128.0)
{
s=128.0;
}
glMaterialf(GL_FRONT GL_SHININESS s);
}
else
{
Lib3dsRgba a={0.2 0.2 0.2 1.0};
Lib3dsRgba d={0.8 0.8 0.8 1.0};
Lib3dsRgba s={0.0 0.0 0.0 1.0};
glMaterialfv(GL_FRONT GL_AMBIENT a);
glMaterialfv(GL_FRONT GL_DIFFUSE d);
glMaterialfv(GL_FRONT GL_SPECULAR s);
}
*/
/*
{
int i;
glBegin(GL_TRIANGLES);
glNormal3fv(f->normal);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4315 2012-04-18 16:42 从高度图创建地形\3dsExport\3dsExport.vcproj
文件 1413 2011-05-03 20:28 从高度图创建地形\3dsExport\3dsExport.vcproj.Alana-PC.Alana.user
文件 5219 2018-12-27 19:32 从高度图创建地形\3dsExport\3dsExport.vcxproj
文件 929 2018-12-27 19:32 从高度图创建地形\3dsExport\3dsExport.vcxproj.filters
文件 143 2011-05-03 20:29 从高度图创建地形\3dsExport\3dsExport.vcxproj.user
文件 3926 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\3dsExport.Build.CppClean.log
文件 114 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\3dsExport.lastbuildstate
文件 1983 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\3dsExport.log
文件 862 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\cl.command.1.tlog
文件 2810 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\CL.read.1.tlog
文件 396 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\CL.write.1.tlog
文件 2 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 2 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 2 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 2 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 1440 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 2646 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 626 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\li
文件 15255 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\main.obj
文件 101376 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\vc110.idb
文件 77824 2018-12-27 19:33 从高度图创建地形\3dsExport\Debug\vc110.pdb
文件 3361 2007-04-20 13:11 从高度图创建地形\3dsExport\main.cpp
文件 3640 2012-04-19 11:52 从高度图创建地形\Backup\opengl.sln
..A..H. 52224 2012-11-12 15:34 从高度图创建地形\Backup\opengl.v11.suo
文件 189440 2018-12-27 19:33 从高度图创建地形\Debug\3dsExport.exe
文件 463336 2018-12-27 19:33 从高度图创建地形\Debug\3dsExport.ilk
文件 707584 2018-12-27 19:33 从高度图创建地形\Debug\3dsExport.pdb
文件 240 2012-04-26 09:46 从高度图创建地形\Debug\cout.txt
文件 176964 2007-04-18 09:34 从高度图创建地形\Debug\data\Grass2.jpg
文件 17464 2007-03-01 18:04 从高度图创建地形\Debug\data\ground.bmp
............此处省略499个文件信息
- 上一篇:深入理解计算机系统CMU官方最新PPT
- 下一篇:牛客网C++ .pdf
相关资源
- 牛客网C++ .pdf
- c++ primer plus 中文第六版 超清电子文字
- PC版SoulKight
- 水准网平差C++语言实现
- 道格拉斯算法C++实现233745
- 殷人昆 数据结构:用面向对象方法与
- 殷人昆数据结构用面向对象方法与C
- 清华大学-邓俊辉-数据结构c++及习题解
-
C++ ATL控件与ja
vasc ript交互 - 基于OpenCV和MFC实现布匹瑕疵检测.rar
- 我的第一本C++书 游历C++世界的地图
- C++ UNO牌游戏 - version 1.0
- C++虚拟数字键盘 源代码 可扩展
- DEV_C++ 6.0233251
- 提高C++性能的编程技术 中文 PDF 非扫
- 《Effective C++中文版》&《Essential C++中
- 南华大学@USC2019春季学期C++程序设计实
- OpenGL编程,画一个球体
- bm3d图像去噪算法C++代码
- C++运用opencv进行二维多张全景图拼接
- C++程序设计语言 揣锦华
-
C++与ja
vasc ript交互 - C++高级网络编程经典的C++网络编程书
- The Art of Scientific Computing第二版、第三
- 基于QT的小型OA-ERP系统(源码1)
- C++ How to Program 10th.pdf
- C++语言的设计与演化超高清版_科学出
- Effective C++:改善程序与设计的55个具
- VC++ 实现绘制波形图动态图
- BM3DC++代码
评论
共有 条评论