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("KLN89Fac