请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 930|回复: 1

[资源共享] 在vxworks下进行OpenGL编程的环境搭建

[复制链接]

1

主题

0

回帖

6

E币

技术员

Rank: 2

积分
2
发表于 2018-3-9 09:20:19 | 显示全部楼层 |阅读模式
vxworks下进行OpenGL编程的环境搭建
一、前言
OpenGL 著名的API,其主要作用是依据照相机的设置,将指定图元绘制到帧缓冲中去。
Mesa OpenGL的一个具体实现,目前版本是7.0.2
DRI 是直接渲染架构(Direct Render Infrustructure)。包含了诸如ATI r300显卡的子项目
Mesa原先是为UNIX/X11设计的,Mesa对于OpenGL的实现是纯软件的,不含硬件加速,所以跑3D图形时帧率低。
DRI提供了一个安全的接口,让Mesa(以及其他OpenGL实现)可以安全的使用显卡提供的硬件加速功能。
风河对于Mesa的支持貌似在5.0就停止更新了,现在Mesa7.0.2中关于windml中跑3D的代码还是N年以前的
但对于入门OPENGL,学习空间、投影变换,光照,纹理,显示列表等概念这已经足够了
所以写这个帖子只是让大家知道如何在vxworks下开始步入OPENGL世界,学习OPENGL基本概念
而要真正开发应用程序,就一定要用DRI了,这就不在本文范围内了
二、准备工作
我的开发环境是
Tornado 2.2
VxWorks 5.5
WindML 3.0
Mesa 4.0(后面提供下载)
三、编译Mesa for WindML 3D图形库
下载MESA 4.0后,解压到c:/Tornado 2.2/target/src
目录结构如图所示

Tornado下,建立一个可下载工程,基于SIMNTgnu
然后添加以下所有的源文件到你的工程,不要漏哦
#### GL #####
(最主要的图形库)
GL_SOURCES = /
api_arrayelt.c /(在C:/Tornado2.2/target/src/Mesa/src下)
api_loopback.c /
api_noop.c /
api_validate.c /
accum.c /
attrib.c /
blend.c /
buffers.c /
clip.c /
colortab.c /
config.c /
context.c /
convolve.c /
debug.c /
depth.c /
dispatch.c /
dlist.c /
drawpix.c /
enable.c /
enums.c /
eval.c /
extensions.c /
feedback.c /
fog.c /
get.c /
glapi.c /
glthread.c /
hash.c /
hint.c /
histogram.c /
image.c /
imports.c /
light.c /
lines.c /
matrix.c /
mem.c /
mmath.c /
pixel.c /
points.c /
polygon.c /
rastpos.c /
state.c /
stencil.c /
texformat.c /
teximage.c /
texobj.c /
texstate.c /
texstore.c /
texutil.c /
varray.c /
vtxfmt.c /
X86/x86.c /C:/Tornado2.2/target/src/Mesa/src/X86下)
X86/common_x86.c /
X86/3dnow.c /
X86/sse.c /
math/m_debug_clip.c /C:/Tornado2.2/target/src/Mesa/src/math下)
math/m_debug_norm.c /
math/m_debug_vertex.c /
math/m_debug_xform.c /
math/m_eval.c /
math/m_matrix.c /
math/m_translate.c /
math/m_vector.c /
math/m_vertices.c /
math/m_xform.c /
array_cache/ac_context.c /C:/Tornado2.2/target/src/Mesa/src/array_cache下)
array_cache/ac_import.c /
swrast/s_aaline.c /C:/Tornado2.2/target/src/Mesa/src/swrast下)
swrast/s_aatriangle.c /
swrast/s_accum.c /
swrast/s_alpha.c /
swrast/s_alphabuf.c /
swrast/s_bitmap.c /
swrast/s_blend.c /
swrast/s_buffers.c /
swrast/s_copypix.c /
swrast/s_context.c /
swrast/s_depth.c /
swrast/s_drawpix.c /
swrast/s_feedback.c /
swrast/s_fog.c /
swrast/s_histogram.c /
swrast/s_imaging.c /
swrast/s_lines.c /
swrast/s_logic.c /
swrast/s_masking.c /
swrast/s_pb.c /
swrast/s_pixeltex.c /
swrast/s_points.c /
swrast/s_readpix.c /
swrast/s_scissor.c /
swrast/s_span.c /
swrast/s_stencil.c /
swrast/s_texture.c /
swrast/s_texstore.c /
swrast/s_triangle.c /
swrast/s_zoom.c /
swrast_setup/ss_context.c /
swrast_setup/ss_triangle.c /
swrast_setup/ss_vb.c /
tnl/t_array_api.c /C:/Tornado2.2/target/src/Mesa/src/tnl下)
tnl/t_array_import.c /
tnl/t_context.c /
tnl/t_eval_api.c /
tnl/t_imm_alloc.c /
tnl/t_imm_api.c /
tnl/t_imm_debug.c /
tnl/t_imm_dlist.c /
tnl/t_imm_elt.c /
tnl/t_imm_eval.c /
tnl/t_imm_exec.c /
tnl/t_imm_fixup.c /
tnl/t_pipeline.c /
tnl/t_vb_fog.c /
tnl/t_vb_light.c /
tnl/t_vb_normals.c /
tnl/t_vb_points.c /
tnl/t_vb_render.c /
tnl/t_vb_texgen.c /
tnl/t_vb_texmat.c /
tnl/t_vb_vertex.c
##### UGL #####
UGL_SOURCES = /
windml/ugl_api.c /C:/Tornado2.2/target/src/Mesa/src/windml下)
windml/ugl_dd.c /
windml/ugl_span.c /
windml/ugl_line.c /
windml/ugl_tri.c /
windml/tornado/torMesaUGLInit.cC:/Tornado2.2/target/src/Mesa/src/windml/tornado下)
##### OS #####
OS_SOURCES = /
OSmesa/osmesa.c /(C:/Tornado2.2/target/src/Mesa/src/OSmesa)
windml/tornado/torMesaOSInit.cC:/Tornado2.2/target/src/Mesa/src/windml/tornado下)
##### GLUTSHAPES #####
GLUTSHAPES_SOURCES = /
windml/ugl_glutshapes.c /C:/Tornado2.2/target/src/Mesa/src/windml下)
windml/tornado/torGLUTShapesInit.cC:/Tornado2.2/target/src/Mesa/src/windml/tornado下)
##### GLU #####
GLU_SOURCES = /
glu.c /(C:/Tornado2.2/target/src/Mesa/src-glu下)
mipmap.c /
nurbs.c /
nurbscrv.c /
nurbssrf.c /
nurbsutl.c /
polytest.c /
project.c /
quadric.c /
tess.c /
tesselat.c /
../src/windml/tornado/torMesaGLUInit.c(在C:/Tornado2.2/target/src/Mesa/src/windml/tornado下)

然后在C:/Tornado2.2/target/h下建立GL文件夹(存放OPENGL头文件的)
C:/Tornado2.2/target/src/Mesa/include/下的
gl.hglext.hglu.hosmesa.huglglutshapes.huglmesa.h拷贝到刚建立的GL文件夹下
做完以上工作后
更改Tornado工程Builds选项卡中的c/c++ compiler选项,添加include path...
添加以下路径
C:/Tornado2.2/target/src/Mesa/include
C:/Tornado2.2/target/src/Mesa/src
再更改Rules选项卡,改为archive,即生成.a文件
然后可以编译了,编译成功后会在你工程目录下生成.a
四、建立一个vxworks的工程
新建一个基于simpc BSPvxworks工程
windmlcomplete 2D图形库和simulator host devices,Simulator graphics组件包含到vxworks
编译你的vxworks
如果不清楚这一步的,论坛里可以搜关于WINDML的安装及编译,这里就不多说了
五、运行DEMO程序
建立一个可下载的工程,基于SIMNTgnu工具链的
uglteapot为例
C:/Tornado2.2/target/src/Mesa/windmldemos下的uglteapot.c添加到工程
taskSpawn中的UGL_FALSE修改为UGL_TRUE,如下
void uglteapot (void)
{
taskSpawn ("tTeapot", 210, VX_FP_TASK, 100000, (FUNCPTR)windMLTeapot,
UGL_TRUE,1,2,3,4,5,6,7,8,9);
}
更改Tornado工程Builds选项卡中Marcos选项
PRJ_LIBS中把生成的.a路径添加进去
我的是C:/Tornado2.2/target/proj/MesaLib/SIMNTgnu/MesaLib.a
然后编译工程,生成.out
运行刚才生成的vxworks
开启一个shell
下载.out
shell下输入命令uglteapot
以下是运行结果

可以按左右键旋转茶壶,按K键打开关闭光照1
ESC是退出
再帖几张运行的DEMO截图

六、总结
也可以在vmware下的vxworks下测试你的DEMO
不过由于不支持双缓,图形显示时有点问题
simpc下显示倒是很正常,不过速度很慢就是
环境搭建好了
大家可以参考DEMO里的流程来写自己的demo学习OPENGL

积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-3-29 05:45 , Processed in 0.042552 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表