在上一节中按照VSG 绘制物体的5个步骤绘制的物体显得非常单调,仅仅简单地设置了颜色。本节将重点讨论VSG 中的纹理设置。
需要设置图形纹理时,都是通过在状态类里设置元素值来完成的。首先需要找到纹理文件,纹理文件可以为rgb、rgba、jpg 和int 等格式。在目录C:\Program Files\MultiGen- Paradigm\ resources\data\databases\town 下可以找到house1.rgb 文件和house1.rgb.attr 文件,首先把这两个文件复制到工程所在的目录下。这样,就准备好了纹理文件。
接下来,重点处理怎么把纹理设置到绘制的图形上。纹理的设置,主要分为3个步骤:
首先,利用纹理工厂类vrTextureFactory 对象加载纹理文件,其代码如下:
vrTextureFactory* pTexFactory=new vrTextureFactory();
vrTexture* houseTexture=pTexFactory->read("house1.rgb");
pTexFactory->unref();
接着,设置纹理元素属性,其代码如下:
vrTexture::Element textureElement;
textureElement.m_enable[0] = true;
textureElement.m_texture[0]=houseTexture;
最后,利用状态对象,把纹理元素设置为状态对象的元素,其代码如下:(www.daowen.com)
vrState* treeState=new vrState();
treeState->setElement(vrTexture::Element::Id,&textureElement);
其他代码与上一节绘制箱体基本相同。主线程中详细代码如图7.3.1所示,有关图形纹理的代码用黑体字体进行了标识。
图7.3.1 纹理控制代码
运行程序,其效果如图7.3.2所示。图中仅仅绘制了一个长宽高都为8 m的箱体,但使用纹理设置后完全是一个房屋的视觉效果。
图7.3.2 纹理效果图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。