高级着色语言GLSL渲染obj文件


读取obj文件,转换为顶点数组、索引数组和颜色数组使用为各自开辟缓存空间并且绑定缓存空间,使用着色器渲染图形,glDrawElements(GL_TRIANGLES, 3 * objRead.faces.size(), GL_UNSIGNED_BYTE, 0);绘制
资源截图
代码片段和文件信息
#include “fileRead.h“


fileRead::fileRead()
{
}


fileRead::~fileRead()
{
}



//Obj文件读取
void fileRead::obj_reader(string filename)
{
string line;
ifstream in(filename);
if (!in)
{
cout << “Invalid file name.“ << endl;
cout << “Can‘t read obj file.“ << endl;
exit(0);
}
else

cout << “read obj file success.“ << endl;
cout << “玩命运算中,请稍后... ...“ << endl;


while (getline(in line))
{
//去除每行首尾的空格回车等
line.erase(line.find_last_not_of(“ 

“) + 1);
switch (line.find_first_not_of(“ 

“))
{

case 0:
break;
// line=line.substr(line.find_first_not_of(“ 

“));
default:
if (line.find_first_not_of(“ 

“)>10){
break;
line = line.substr(line.find_first_not_of(“ 

“));
break;
}
}

//获取顶点坐标
if (line.compare(0 2 “v “) == 0)
{
line = line.substr(line.find_first_of(“v“) + 1);
istringstream s(line);
mesh::vertex v;
s >> v.vx >> v.vy >> v.vz;
vertexs.push_back(v);

}

//获取纹理坐标
if (line.compare(0 2 “vt“) == 0)
{
line = line.substr(line.find_first_of(“vt“) + 2);
istringstream s(line);
mesh::texture vt;
s >> vt.vtx >> vt.vty;
textures.push_back(vt);
}

//获取顶点法向量坐标
if (line.compare(0 2 “vn“) == 0)
{
line = line.substr(line.find_first_of(“vn“) + 2);
istringstream s(line);
mesh::normal vn;
s >> vn.vnx >> vn.vny >> vn.vnz;
normals.push_back(vn);
}


//获取面索引
if (line.compare(0 2 “f “) == 0)
{
string temp f_data;
line = line.substr(line.find_first_of(“f“) + 1);
//cout< if (line.compare(1 10 “//“)>0)
{
line = replace_all_distinct(line “/“ “ “);
istringstream s(line);
mesh::face f;
s >> f.vfx >> f.vnfx;
s >> f.vfy >> f.vnfy;
s >> f.vfz >> f.vnfz;
faces.push_back(f);
}
else
{
line = replace_all_distinct(line “/“ “ “);
istringstream s(line);
mesh::face f;
s >> f.vfx >> f.vtfx >> f.vnfx;
s >> f.vfy >> f.vtfy >> f.vnfy;
s >> f.vfz >> f.vtfz >> f.vnfz;
faces.push_back(f);
}

}

}
cout< cout< cout< cout<}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-05 09:19  obj-glsl
     目录           0  2018-06-04 18:45  obj-glslDebug
     文件      224768  2018-06-04 17:12  obj-glslDebugglsl-test-1.exe
     文件     3591228  2018-06-04 17:12  obj-glslDebugglsl-test-1.ilk
     文件     4000768  2018-06-04 17:12  obj-glslDebugglsl-test-1.pdb
     目录           0  2018-06-04 18:47  obj-glslRelease
     文件       52224  2018-06-05 09:06  obj-glslReleaseglsl-test-1.exe
     文件     2690048  2018-06-05 09:06  obj-glslReleaseglsl-test-1.pdb
     目录           0  2018-06-05 09:06  obj-glslglsl-test-1
     目录           0  2018-06-04 18:43  obj-glslglsl-test-1Debug
     文件      853113  2018-06-04 11:03  obj-glslglsl-test-1DebugfileRead.obj
     文件        7576  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.log
     目录           0  2018-06-04 18:42  obj-glslglsl-test-1Debugglsl-test-1.tlog
     文件       94564  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tlogCL.read.1.tlog
     文件        3214  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tlogCL.write.1.tlog
     文件        3106  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tlogcl.command.1.tlog
     文件         200  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tlogglsl-test-1.lastbuildstate
     文件       26944  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tloglink.command.1.tlog
     文件       36724  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tloglink.read.1.tlog
     文件        1122  2018-06-04 17:12  obj-glslglsl-test-1Debugglsl-test-1.tloglink.write.1.tlog
     文件      448883  2018-06-04 17:12  obj-glslglsl-test-1Debugmian.obj
     文件      296873  2018-06-04 10:59  obj-glslglsl-test-1Debugshader.obj
     文件     1281024  2018-06-04 17:12  obj-glslglsl-test-1Debugvc120.idb
     文件     1126400  2018-06-04 17:12  obj-glslglsl-test-1Debugvc120.pdb
     目录           0  2018-06-05 09:06  obj-glslglsl-test-1Release
     文件     2807514  2018-06-04 17:13  obj-glslglsl-test-1ReleasefileRead.obj
     文件        7696  2018-06-05 09:06  obj-glslglsl-test-1Releaseglsl-test-1.log
     目录           0  2018-06-05 09:06  obj-glslglsl-test-1Releaseglsl-test-1.tlog
     文件      107992  2018-06-05 09:06  obj-glslglsl-test-1Releaseglsl-test-1.tlogCL.read.1.tlog
     文件        2670  2018-06-05 09:06  obj-glslglsl-test-1Releaseglsl-test-1.tlogCL.write.1.tlog
     文件        3216  2018-06-05 09:06  obj-glslglsl-test-1Releaseglsl-test-1.tlogcl.command.1.tlog
............此处省略23个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)