Chinaunix首页 | 论坛 | 博客
  • 博客访问: 219489
  • 博文数量: 37
  • 博客积分: 1627
  • 博客等级: 上尉
  • 技术积分: 396
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-06 12:08
文章分类

全部博文(37)

文章存档

2018年(1)

2016年(2)

2015年(2)

2014年(1)

2012年(8)

2011年(9)

2010年(14)

我的朋友

分类:

2010-01-07 15:23:23

由于工作的需要,最近研究了一下OpenGL.都说它是个3D图象处理标准。可这两天才有点明白OpenGL到底是啥意思
 
为什么说是标准呢?因为OpenGL 提供了一套标准的API接口函数。标准定好了后,用户根据这套接口函数写应用程序,而显示芯片厂商要想实现OpenGL功能,只需要实现相应的接口函数即可。 这样用户也能方便的将代码移植到其他平台上去了。
之前有句说的比较经典“三流公司卖质量,二流公司卖服务,一流公司卖标准”。在这方面属于中国公司的标准和协议太少了
 
闲话说的有点多了,下面介绍我的平台,用的是ST-linux ,主芯片是ST的sti7105. ST提供的sdk里,提供了OpenGL ES 1.1的支持,但好些个API函数没实现,反正我在网上找的OpenGL的例子都用不了。 为了满足我对OpenGL的好奇心,只能找找不基于ST平台的OpenGL库了,但这样的缺点就是效率低,毕竟一个是软的,另一个是硬的。
具体步骤如下:
 
根据自己的情况做了些修改,因此记录下来。
tar -xjf ../picogl-20051108.tar.tar 
cd PicoGL/
mkdir install
 
grep -n -r "DGLX_IMPL_HEADER" ./ --color
 
./examples/Makefile.am:4:       -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\"" \
./examples/Makefile.in:213:     -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\"" \
./src/Makefile.am:41:   -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\""
./src/glu/Makefile.am:15:       -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\""
./src/glu/Makefile.in:212:      -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\""
./src/Makefile.in:253:  -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\""
 
将所有的  -DGLX_IMPL_HEADER="\"$(GLX_IMPL_HEADER)\""
改为:    -DGLX_IMPL_HEADER="$(GLX_IMPL_HEADER)"
 
./configure CC=sh4-linux-gcc --prefix=$PWD/install --host=sh4-linux --with-backend=vesafb
 
vi include/GL/glx.h
 
注释掉 #include GLX_IMPL_HEADER 一行,直接include "glx_impl.h" 文件的路径:
#include "/home/terry/Workdir/Applications/OpenGL/PicoGL/backends/vesafb/glx_impl.h"
 
另外,修改backends/vesafb/tk.c中,initialize_fbdev函数有关VarInfo的设置:
#if 0
         if (VarInfo.bits_per_pixel == 16) (VarInfo.bits_per_pixel == 15){
           VarInfo.red.offset = 11;
           VarInfo.green.offset = 5;
           VarInfo.blue.offset = 0;
           VarInfo.red.length = 5;
           VarInfo.green.length = 6;
           VarInfo.blue.length = 5;
           VarInfo.transp.offset = 0;
           VarInfo.transp.length = 0;
         }
         else if (VarInfo.bits_per_pixel == 32) {
           VarInfo.red.offset = 16;
           VarInfo.green.offset = 8;
           VarInfo.blue.offset = 0;
           VarInfo.transp.offset = 24;
           VarInfo.red.length = 8;
           VarInfo.green.length = 8;
           VarInfo.blue.length = 8;
           VarInfo.transp.length = 8;
         }
         /* timing values taken from /etc/fb.modes (1280x1024 @ 75Hz) */
         VarInfo.xres_virtual = VarInfo.xres = 1920;
         VarInfo.yres_virtual = VarInfo.yres = 1080;
         VarInfo.pixclock = 7408;
         VarInfo.left_margin = 248;
         VarInfo.right_margin = 16;
         VarInfo.upper_margin = 38;
         VarInfo.lower_margin = 1;
         VarInfo.hsync_len = 144;
         VarInfo.vsync_len = 3;
         VarInfo.xoffset = 0;
         VarInfo.yoffset = 0;
         VarInfo.nonstd = 0;
         VarInfo.vmode &= ~FB_VMODE_YWRAP; /* turn off scrolling */
         /* set new variable screen info */
         if (ioctl(FrameBufferFD, FBIOPUT_VSCREENINFO, &VarInfo)) {
                 fprintf(stderr, "ioctl(FBIOPUT_VSCREENINFO failed): %s\n",
                         strerror(errno));
                 exit(1);
         }
#endif
我是把它们都注释掉了,因为我不需要再对framebuffer进行设置了,直接用默认的即可。
 
make && make install
 
安装成功后,在install 文件夹下:
./
|-- bin
|   |-- gears
|   |-- mech
|   |-- spin
|   `-- texobj
`-- lib
    |-- libPicoGL.a
    |-- libPicoGL.la
    |-- libPicoGL.so -> libPicoGL.so.0.0.0
    |-- libPicoGL.so.0 -> libPicoGL.so.0.0.0
    |-- libPicoGL.so.0.0.0
    |-- libPicoGLU.a
    |-- libPicoGLU.la
    |-- libPicoGLU.so -> libPicoGLU.so.0.0.0
    |-- libPicoGLU.so.0 -> libPicoGLU.so.0.0.0
    `-- libPicoGLU.so.0.0.0
 
bin/目录下就是编译好的例子,直接将编译好的bin,lib 拷贝到目标板上。就可以显示了。
 
也可以静态编译这些例子。
cd examples/
sh4-linux-gcc -o cube-sh -L ../install/lib/libPicoGL.so -L ../install/lib/libPicoGLU.so -lm cube.o  ../install/lib/libPicoGL.a ../install/lib/libPicoGLU.a 
 
现在可以到板子上运行cube-sh 程序了。如果成功了,可以看到一个机器人一步一步望前走 。
 
接下来就等ST的支持了,想办法找他们的技术支持提供一个OpenGL的例子,好让我在板子上看看效果如何。有新的消息我回写出来。
阅读(3556) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:directfb-1.4.3 的移植

给主人留下些什么吧!~~