理论教育 VegaPrime:通道屏幕绘图功能实现

VegaPrime:通道屏幕绘图功能实现

时间:2023-11-25 理论教育 版权反馈
【摘要】:通道屏幕坐标转换类中的关键函数:void notify最后一个参数vrDrawContext *context 为绘制上下文,可以进行图形绘制。其中的fx 和fy 就是依据目标对象的实际三维坐标转换而来,Width 和Height 分别为场景窗口的实际宽度和高度,ValX 和ValY 为窗口鼠标函数获取的当前鼠标在通道窗口的位置。后两条线段的以目标对象PublicMember::CTS_pObject_observer的动态位置为参考点绘制。具体代码如图9.4.5所示。图9.4.5通道屏幕坐标转换的绘图功能图形绘制函数编写完毕后,也需要在Vega Prime的主线程中配置使用。

VegaPrime:通道屏幕绘图功能实现

通道屏幕坐标转换类中的关键函数:

void notify(vsChannel::Event event,const vsChannel *channel,vrDrawContext *context)

最后一个参数vrDrawContext *context 为绘制上下文,可以进行图形绘制。其中的fx 和fy 就是依据目标对象的实际三维坐标转换而来,Width 和Height 分别为场景窗口的实际宽度和高度,ValX 和ValY 为窗口鼠标函数获取的当前鼠标在通道窗口的位置。

绘制线段时,以窗口鼠标函数为基础,绘制了四条线段:一条是从通道左下角到鼠标点击位置绘制一条蓝色线段;一条是从通道右下角到鼠标点击位置绘制一条红色线段;一条是绘制宽度为15的蓝色线段为背景;一条是绘制宽度为15的红色线段为对象生命值。后两条线段的以目标对象PublicMember::CTS_pObject_observer的动态位置(fx,fy)为参考点绘制。

整个绘制过程中,完全使用OpenGL的线段绘制函数。需要绘制复杂图形的,可自行查阅相关函数。

glLineWidth(15.0)用来控制线段的宽度,glColor4f(0.0f,0.0f,1.0f,1.0f)用来控制线段的颜色。

另外,通道屏幕的高度和宽度都进行了归一化处理,范围为[0~1],以通道屏幕的左下角为坐标原点,以通道屏幕的右上角为[1,1]坐标点。

具体代码如图9.4.5所示。

(www.daowen.com)

图9.4.5 通道屏幕坐标转换的绘图功能

图形绘制函数编写完毕后,也需要在Vega Prime的主线程中配置使用。

运行例子VPTestDialogMouseScreenDisplay,效果如图9.4.6所示。按下鼠标左键进行上下滑动,汽车头顶的生命值即红色线段值会随之改变。

图9.4.6 通道屏幕图形绘制

当然,图形绘制和文字显示,可以结合使用,效果更好。

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

我要反馈