理论教育 VegaPrime虚拟现实开发技术:通道渲染的使用

VegaPrime虚拟现实开发技术:通道渲染的使用

时间:2023-11-25 理论教育 版权反馈
【摘要】:在设计里,通过一个静态整数变量PublicMember::RenderColor 传递数值,0 代表红色,1 代表绿色,2 代表蓝色,对通道进行颜色渲染。图9.10.5通道渲染类的使用图9.10.6各色通道渲染效果在操作界面上,设置了红色通道、绿色通道和蓝色通道,以及正常渲染,如图9.10.6所示。

VegaPrime虚拟现实开发技术:通道渲染的使用

通道渲染的使用主要通过通道订阅类vsChannel::Subscriber的vsChannel::EVENT_PRE_DRAW事件来完成。

在这里,设计了一个通道渲染类myChannRender 来执行通道的渲染:

class myChannRender:public vsChannel::Subscriber

通道渲染类myChannRender 继承于vsChannel::Subscriber,重载了通道的绘制函数notify,在该函数中处理vsChannel::EVENT_PRE_DRAW 事件。该事件中,首先清理掉原有的通道色彩,根据需要设置RGB 和ALPHA 通道,RGB 分别代表红绿蓝3个颜色通道,ALPHA 通道则代表透明。

通道颜色的设置通过glColorMask 函数完成:

glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);

glColorMask 函数通过设置颜色掩码,由RGB 形成单色或者混合颜色。在设计里,通过一个静态整数变量PublicMember::RenderColor 传递数值,0 代表红色,1 代表绿色,2 代表蓝色,对通道进行颜色渲染。其他情况则恢复通道的正常渲染:

glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);

通道渲染类myChannRender的完整代码如图9.10.4所示。

图9.10.4 通道渲染订阅类设计

通道渲染类myChannRender 必须在VP的主线程中为通道添加订阅事件才能发挥作用,其主要代码如下:(www.daowen.com)

//为通道添加订阅事件

myChannRender * ChannRender=new myChannRender();

vpChannel *channel=*vpChannel::begin();

channel->addSubscriber(vsChannel::EVENT_PRE_DRAW,ChannRender);

channel->addSubscriber(vsChannel::EVENT_POST_DRAW,ChannRender);

首先实例化一个通道渲染对象指针,然后获取当前通道,最后分别为当前通道添加vsChannel::EVENT_PRE_DRAW 和vsChannel::EVENT_POST_DRAW 事件,以便使用通道渲染功能。其完整代码如图9.10.5所示。

图9.10.5 通道渲染类的使用

图9.10.6 各色通道渲染效果

在操作界面上,设置了红色通道、绿色通道和蓝色通道,以及正常渲染,如图9.10.6所示。只需要修改PublicMember::RenderColor的值即可:0 代表红色,1 代表绿色,2 代表蓝色。当然,可以通过设置对通道进行更多的颜色混合渲染。

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

我要反馈