在vxworks下进行OpenGL编程的环境搭建
2010年10月27日
原帖地址:http://www.cevx.com/bbs/viewthread.php?tid=11343&h ighlight=opengl
在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.c(C:\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.c(C:\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.c(C:\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.h、glext.h、glu.h、osmesa.h、uglglutshapes.h、uglmesa.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 BSP的vxworks工程
把windml的complete 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了
转自Tony嵌入式论坛,地址:http://www.cevx.com/bbs/thread-11343-1-1.html
发表评论
-
关于如何学好游戏3D引擎编程的一些经验
2012-01-20 02:49 589关于如何学好游戏3D引擎编程的一些经验 2010年09月16 ... -
3d世界尽在掌握!―― directx 8.1/9 graphic 全解析
2012-01-20 02:49 6073d世界尽在掌握!―― directx 8.1/9 graph ... -
使用D3D渲染YUV视频数据
2012-01-20 02:49 1410使用D3D渲染YUV视频数据 ... -
关于 OGRE 与 OSG 的简单比较
2012-01-20 02:49 761关于 OGRE 与 OSG 的简单 ... -
神马都是浮云,但也要用心去活!
2012-01-19 10:42 632神马都是浮云,但也要用心去活! 2012年01月11日 ... -
神马爱上了浮云。
2012-01-19 10:42 541神马爱上了浮云。 2012 ... -
神马都是浮云
2012-01-19 10:42 426神马都是浮云 2012年01月14日 ... -
神马爱情?全是浮云
2012-01-19 10:42 542神马爱情?全是浮云 2011年12月24日 神马爱情、你 ... -
成绩神马的是浮云对不对
2012-01-19 10:42 545成绩神马的是浮云对不对 2012年01月13日 今天是1 ... -
关于PHP的缓存
2012-01-17 03:12 534关于PHP的缓存 2011年05 ... -
并行 .net 应用程序的过去、现在和未来
2012-01-17 03:12 550并行 .net 应用程序的过去、现在和未来 2011年08月 ... -
Linux设备驱动程序设计(17.2)(完)
2012-01-17 03:12 550Linux设备驱动程序设计(17.2)(完) 2010年06 ... -
linux驱动开发1
2012-01-17 03:12 807linux驱动开发1 2011年06 ... -
冲刺的感觉
2012-01-16 01:46 551冲刺的感觉 2009年11月02日 ... -
复制千万业绩
2012-01-16 01:46 468复制千万业绩 2011年04月30日 ... -
团队激励语、职场标语、行动口号激励语
2012-01-16 01:46 1046团队激励语、职场标语、行动口号激励语 2010年08月08日 ... -
激励口号!
2012-01-16 01:46 621激励口号! 2009年12月27 ... -
团队口号_激励口号
2012-01-16 01:45 619团队口号_激励口号 2011 ... -
最近任务不是很近整理了一下这一个月来我学习的新技术-如果可以的话、我愿意-iteye技术网站
2012-01-11 01:36 659最近任务不是很近整理了一下这一个月来我学习的新技术-如果可以的 ... -
hibernate使用xml配置文件的方式-如果可以的话、我愿意-iteye技术网站
2012-01-11 01:35 633hibernate使用xml配置文件的方式-如果可以的话、我愿 ...
相关推荐
vxworks编程1 vxworks编程1 vxworks编程1 vxworks编程1 vxworks编程1
wmware环境下vxworks 交叉编译环境的搭建 vxworks 交叉编译环境的搭建
VxWorks5.5 环境搭建1
VxWorks6.6 环境搭建1
Vxworks虚拟机安装详解,包括各种问题
VxWorks单步调试环境的搭建
VxWorks网络协议栈编程经典书籍,这是学习和应用网络嵌入式编程的好的参考资料
VxWorks 下PCI 驱动编程 9056, 9054,9052,有源码,还有几十篇论文, 有1553B,CAN,PCI读写,SJA1000. 都是我前几年收集的。
vxworks驱动及分布式编程一本很好的参考资料
简单易学,轻松上手
VxWorks 网络编程手册 VxWorks 网络编程手册
Vxworks网络编程指南
vxworks_programmers_guide.pdf与vxworks_network_programmers_guide.pdf 中英对照,经理让看的,觉得看英文原著确实比看中文的好,希望对朋友们有帮助,顺利拿点资源分好继续下载资源
基于vxworks653进行嵌入式开发的编程手册
VxWorks用户编程手册
VxWorks5.5.1编程指南,Word文件
VxWorks SMP多核编程指南.doc
VxWorks 网络编程教程 里面有大量的事例!
vxworks网络协议栈编程指南