理论教育 VegaPrime虚拟现实开发技术:图形纹理控制

VegaPrime虚拟现实开发技术:图形纹理控制

时间:2023-11-25 理论教育 版权反馈
【摘要】:在上一节中按照VSG 绘制物体的5个步骤绘制的物体显得非常单调,仅仅简单地设置了颜色。本节将重点讨论VSG 中的纹理设置。需要设置图形纹理时,都是通过在状态类里设置元素值来完成的。主线程中详细代码如图7.3.1所示,有关图形纹理的代码用黑体字体进行了标识。图7.3.1纹理控制代码运行程序,其效果如图7.3.2所示。

VegaPrime虚拟现实开发技术:图形纹理控制

在上一节中按照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 纹理效果图

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈