OSG教程学习加实践(2)

上传人:s****a 文档编号:169562278 上传时间:2022-11-16 格式:DOCX 页数:3 大小:10.04KB
收藏 版权申诉 举报 下载
OSG教程学习加实践(2)_第1页
第1页 / 共3页
OSG教程学习加实践(2)_第2页
第2页 / 共3页
OSG教程学习加实践(2)_第3页
第3页 / 共3页
资源描述:

《OSG教程学习加实践(2)》由会员分享,可在线阅读,更多相关《OSG教程学习加实践(2)(3页珍藏版)》请在装配图网上搜索。

1、在编程开始前要认识一下*.tga后缀的文件: TGA格式(Tagged Graphics)是由美国Truevision公司为其显示卡开发的一种图像文件格式,文件后 缀为“• tga”,已被国际上的图形、图像工业所接受。 TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有很大影响,是计 算机生成图像向电视转换的一种首选格式。 TGA图像格式最大的特点是可以做出不规则形状的图形、图像文件,一般图形、图像文件都为 四方形,若需要有圆形、菱形甚至是缕空的图像文件时,TGA可就派上用场了! TGA格式支持压缩,使用不失真的压缩算法。 在工业设计领域,使用三维软件制作出来

2、的图像可以利用TGA格式的优势,在图像内部生成一 个Alpha (通道),这个功能方便了在平面软件中的工作。 #include #include #include #include #include #include #include #include #include using

3、 namespace std; osg::Geode* createPyramid() { osg::Geode* pyramidGeode = new osg::Geode(); osg::Geometry* pyramidGeometry = new osg::Geometry(); pyramidGeode->addDrawable(pyramidGeometry); // 指定顶点 osg::Vec3Array* pyramidVertices = new osg::Vec3Array; pyramidVertices->push_back( osg::Vec3(0,

4、0, 0) ); // 左前 pyramidVertices->push_back( osg::Vec3(2, 0, 0) ); // 右前 pyramidVertices->push_back( osg::Vec3(2, 2, 0) ); // 右后 pyramidVertices->push_back( osg::Vec3( 0,2, 0) ); // 左后 pyramidVertices->push_back( osg::Vec3( 1, 1,2) ); // 塔尖 // 将顶点数组关联给几何体 pyramidGeometry->setVertexArray( pyramid

5、Vertices ); //根据底面的四个顶点创建底面四边形(QUAD) osg::DrawElementsUlnt* pyramidBase = new osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0); pyramidBase->push_back(3); pyramidBase->push_back(2); pyramidBase->push_back(1); pyramidBase->push_back(0); // 创建其他面的代码从略 osg::Vec4Array* colors = new osg::Vec4Ar

6、ray; colors->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f) ); //索引 0 红色 colors->push_back(osg::Vec4(0.0f, 1.0f, 0.0f, 1.0f) ); //索引 1 绿色 colors->push_back(osg::Vec4(0.0f, 0.0f, 1.0f, 1.0f) ); //索引 2 蓝色 colors->push_back(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f) ); //索引 3 白色 osg::TemplateIndexArray

7、gned int, osg::Array::UIntArrayType,4,4> *colorIndexArray; colorIndexArray = new osg::TemplateIndexArray; colorIndexArray->push_back(0); // 顶点 0 对应颜色元素 0 colorIndexArray->push_back(1); // 顶点 1 对应颜色元素 1 colorIndexArray->push_back(2); // 顶点 2 对应颜色元素 2 col

8、orIndexArray->push_back(3); // 顶点 3 对应颜色元素 3 colorIndexArray->push_back(0); // 顶点 4 对应颜色元素 0 pyramidGeometry->setColorArray(colors); pyramidGeometry->setColorIndices(colorIndexArray); pyramidGeometry->setColorBinding(osg::Geometry::BIND_PER_VERTEX); osg::Vec2Array* texcoords = new osg::Vec2Array

9、(5); (*texcoords)[0].set(0.00f,0.0f); // 顶点 0 的纹理坐标 (*texcoords)[1].set(0.25f,0.0f); // 顶点 1 的纹理坐标 (*texcoords)[2].set(0.50f,0.0f); // 顶点 2 的纹理坐标 (*texcoords)[3].set(0.75f,0.0f); // 顶点 3 的纹理坐标 (*texcoords)[4].set(0.50f,1.0f); // 顶点 4 的纹理坐标 pyramidGeometry->setTexCoordArray(0,texcoords); retur

10、n pyramidGeode; } int main() { // 声明场景的根节点 osg::Group* root = new osg::Group(); osg::Geode* pyramidGeode = createPyramid(); root->addChild(pyramidGeode); osg::Texture2D* KLN89FaceTexture = new osg::Texture2D; //避免在优化过程中出错 KLN89FaceTexture->setDataVariance(osg::Object::DYNAMIC); // 从文件读取图片

11、 osg::Image* klnFace = osgDB::readImageFile("KLN89FaceB.tga"); if (!klnFace) { printf(" couldn't find texture, quiting.");//输出错误 system("pause"); return -1; } // 将图片关联到纹理 KLN89FaceTexture->setImage(klnFace); // 创建 StateSet osg::StateSet* stateOne = new osg::StateSet(); //将纹理关联给StateSet的纹理单元0 stateOne->setTextureAttributeAndModes (0,KLN89FaceTexture,osg::StateAttribute::ON); // 将渲染状态关联给金字塔节点 pyramidGeode->setStateSet(stateOne); osgViewer::Viewer viewer; //最后我们进入仿真循环: viewer.setSceneData( root ); return viewer.run();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!