美国海军研究生学校(NPS)OSG教程学习笔记——第二课
2010-01-06 22:31
591 查看
NPS教程的第二课是《使用StateSet 创建带有纹理的几何体》,在第一课的基础上,本课给金字塔披上漂亮的纹理图像,使金字塔看起来更逼真。
相对于OpenGL中设置纹理的繁琐步骤,OSG确实为我们简化了大量的工作。我们仅仅需要做以下三件事:
1.正确设置纹理坐标。
osg::Vec2Array* tex_coords = new osg::Vec2Array;
tex_coords.push_back(osg::Vec2f(0.00, 0.0)); // 顶点0的纹理坐标
tex_coords.push_back(osg::Vec2f(0.25, 0.0)); // 顶点1的纹理坐标
tex_coords.push_back(osg::Vec2f(05.0, 0.0)); // 顶点2的纹理坐标
tex_coords.push_back(osg::Vec2f(0.75, 0.0)); // 顶点3的纹理坐标
tex_coords.push_back(osg::Vec2f(0.50, 1.0)); // 顶点4的纹理坐标
pyramid_geom->setTexCoordArray(0, tex_coords);
2.定义纹理,并将图像关联到纹理
osg::Texture2D* KLN89Face_texture = new osg::Texture2D; // 定义一个二维纹理对象
KLN89Face_texture->setDataVariance(osg::Object::DYNAMIC); // 避免OSG在优化过程中自动去除纹理,没有开启优化功能就没必要设置了
osg::Image* image = osgDB::readImageFile("KLN89FaceB.tga"); // 读入一张图像,OpenGL中读取图像真是一项伤脑筋的事,OSG使我们解脱了
KLN89Face_texture->setImage(image); // 将图像关联到纹理上
3.通过渲染状态StateSet类,将纹理和几何体关联起来
osg::StateSet* state = new osg::StateSet();
state->setTextureAttributeAndModes(0, KLN89Face_texture, osg::StateAttribute::ON); // 将纹理关联到StateSet的纹理单元0,每个StateSet可以设置多个纹理单元
pyramid_geode->setStateSet(state); // 将渲染状态关联到金字塔节点
OK,大功告成!是不是相当简单呢?当然如果你想作出更炫的效果,可得下功夫研究研究纹理,其中的无限精彩等待我们去发掘。欢迎来信交流,邮箱地址是batonyh@163.com。
本教程来自于网友的无私奉献,感谢你们辛勤劳动!
相对于OpenGL中设置纹理的繁琐步骤,OSG确实为我们简化了大量的工作。我们仅仅需要做以下三件事:
1.正确设置纹理坐标。
osg::Vec2Array* tex_coords = new osg::Vec2Array;
tex_coords.push_back(osg::Vec2f(0.00, 0.0)); // 顶点0的纹理坐标
tex_coords.push_back(osg::Vec2f(0.25, 0.0)); // 顶点1的纹理坐标
tex_coords.push_back(osg::Vec2f(05.0, 0.0)); // 顶点2的纹理坐标
tex_coords.push_back(osg::Vec2f(0.75, 0.0)); // 顶点3的纹理坐标
tex_coords.push_back(osg::Vec2f(0.50, 1.0)); // 顶点4的纹理坐标
pyramid_geom->setTexCoordArray(0, tex_coords);
2.定义纹理,并将图像关联到纹理
osg::Texture2D* KLN89Face_texture = new osg::Texture2D; // 定义一个二维纹理对象
KLN89Face_texture->setDataVariance(osg::Object::DYNAMIC); // 避免OSG在优化过程中自动去除纹理,没有开启优化功能就没必要设置了
osg::Image* image = osgDB::readImageFile("KLN89FaceB.tga"); // 读入一张图像,OpenGL中读取图像真是一项伤脑筋的事,OSG使我们解脱了
KLN89Face_texture->setImage(image); // 将图像关联到纹理上
3.通过渲染状态StateSet类,将纹理和几何体关联起来
osg::StateSet* state = new osg::StateSet();
state->setTextureAttributeAndModes(0, KLN89Face_texture, osg::StateAttribute::ON); // 将纹理关联到StateSet的纹理单元0,每个StateSet可以设置多个纹理单元
pyramid_geode->setStateSet(state); // 将渲染状态关联到金字塔节点
OK,大功告成!是不是相当简单呢?当然如果你想作出更炫的效果,可得下功夫研究研究纹理,其中的无限精彩等待我们去发掘。欢迎来信交流,邮箱地址是batonyh@163.com。
本教程来自于网友的无私奉献,感谢你们辛勤劳动!
相关文章推荐
- 美国海军研究生学校(NPS)OSG教程学习笔记——第三课
- 美国海军研究生学校(NPS)OSG教程学习笔记——第一课
- OSG(美国海军NPS)教程学习加实践(2)
- 学校学习ios教程笔记,第十一节初识ios页面中的界面传值
- 学校学习ios教程笔记,第四节swift中可变数组和不可变数组以及元组的概念与操作
- 斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- 学校学习ios教程笔记,第十二节初识ios控制器中的标签视图控制器
- 学校学习ios教程笔记,第八节初识ios控件中的UILable与UITextField
- 学校学习ios教程笔记,第五节swift中的字典以及枚举的概念与操作和初识函数
- 【OpenGL】nehe教程第二、三课学习笔记
- 斯坦福大学iOS应用开发教程学习笔记(第二课) 计算器实现(mvc实战)
- 学校学习ios教程笔记,第七节swift中的类与对象的属性和懒加载
- 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App
- 学校学习ios教程笔记,第三节swift中的switch,for循环和while循环
- 学校学习ios教程笔记,第一节回忆block用法
- 学校学习ios教程笔记,第六节swift中的函数以及闭包
- 学校学习ios教程笔记,第二节Swift的常量,变量,可选类型控制流
- 斯坦福大学iOS应用开发教程学习笔记(第二课) 计算器实现2 改进版
- 2011斯坦福大学iOS应用开发教程学习笔记(第二课)My First iOS App