VxWorks入门系列教程11:搭建OpenGL环境(移植Mesa到VxWorks)

系列索引:VxWorks开发入门系列教程索引

上一篇:VxWorks入门系列教程10:在VxWorks系统启动时运行程序

前言

OpenGL是与驱动交互的著名的绘图API。

Mesa是一个OpenGL的开源实现。

风河的低版本层支持过Mesa,比如Mesa4.0可以运行在WindML3.0(VxWorks5.5 Tornado2.2)之上。后续风河对Mesa的支持就停止了。

后来风河也移植过Mesa,从VxWorks6.9.3.3开始,Wind Media Library又支持Mesa驱动程序。例如Vx6.9的WindML5.3里集成了Mesa7.6.1。但官方只验证了ARM平台,如果想在Intel等其它硬件平台里运行,需要做一些工作。如果您已升级到VxWorks 6.9.3 Update Pack 3或更高版本,则应在安装中安装mesa目录:/components/windml-5.3/src/mesa-7.6.1

准备

VxWorks 6.8.3 + Workbench 3.2.3 + Mesa 22.0

Mesa仓库地址为:https://gitlab.freedesktop.org/mesa/mesa.git

Mesa GLU仓库为:https://gitlab.freedesktop.org/mesa/glu.git

GLU移植

下载源码

glu

创建新工程,File->New->Wind River Workbench Project,选择Wind River VxWorks 6.8,然后Next

new

选择平台为VxWorks6.8

target

设置编译类型

build type

设置工程

project

创建的工程为:

project

将下载的GLU源码和头文件复制到工程目录中

project files

在VxWorks工程中刷新就会自动添加到工程中。

设置工程的头文件

property

点击编译,修复编译错误(一般是头文件相关的)

result

编译结果为*.a文件。

几乎所有的程序移植到VxWorks都是这个流程,下面我们用这个流程移植Mesa。

Mesa移植

我们移植测试的是VxWorks6.9.4.10自带的Mesa7.6.1。然后对比官方提供的和原始的,移植任意版本Mesa。

这里我们使用VxWorks提供的Mesa,根据官方手册,我们进行操作。

Mesa7.6.1

mesa7.6.1

除了Mesa,风河还提供了glut、xorg等适配。

首先创建一个可下载DKM的工程

在工程名右键,添加Other,弹出对话框,选择中间件

wizard

点击下一步,选择工程

project

下一步,选择中间件版本

version

下一步,选择组件目标

template

然后自动进入windml配置界面,点击System条目,设置一下

system

在System条目下,添加一个显示Display

subling

设置显示名称

display

在Dispaly下添加一个Child

child

在Display下添加一个Graphics,设置Graphic Mode 为640x480-32 Bit - ARGB8888

在Display下添加一个键盘Keyboard,保持默认配置

在Display下添加一个鼠标Pointer,保持默认配置

在Display下添加一个窗口管理器,保持默认配置,根据需要修改。

然后再工程右键编译。

需要三分钟,就可以在源码位置找到编译的a文件

result

至此mesa移植结束,接下来看看效果。

测试

测试使用的是官方实例代码,位置为C:\WindRiver\components\windml-5.3\samples\openxx中的es2Gears.c

按照DKM程序创建的流程编译运行

1、在工程属性的Build Properties的Defines字段添加-DUSE_GLES2_API

2、添加Include Path -IC:/WindRiver/components/windml-5.3/h

3、在Libraries字段下添加静态库路径-L */*/libs-l windml-5.3-l windml-5.3glut-l windml-5.3glu-l windml-5.3gl-l windml-5.3egl

效果为:

gears

下一篇:VxWorks入门系列教程12:OpenGL绘图