Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1466715
  • 博文数量: 218
  • 博客积分: 6394
  • 博客等级: 准将
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-08 15:33
个人简介

持之以恒

文章分类

全部博文(218)

文章存档

2013年(8)

2012年(2)

2011年(21)

2010年(55)

2009年(116)

2008年(16)

分类:

2010-03-10 09:07:17

    昨天花了将近一天的时间,帮实验室的一个同学找开源的图形图像库,最后锁定在了SDL(SGE)和OpenGLES上,下下来源文件,编译成相应的Lib库和DLL库,并在相应的机器上试验成功。现在总结一下吧,也算没白忙一场。
1.SDL和SGE
1.1介绍

    SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事 件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接 口以实现3D图形。
    SGE是SDL Graphics Extension (SGE)的缩写.SGE是一个SDL的附加图形库,SGE提供象素操作,基本图形,字体渲染,旋转缩放等功能.它由十个部分组成,我就不一一说了.总 之,我认为他是对SDL现有库的重要补充,在游戏开发中,能够将原来通过SDL做的工作简化了许多.例如用SDL无法直接画线,输出文字,但是通过这个 库,可以极大地简化操作.
SDL的官方网站
SGE的官方网站
1.2步骤
    1.在两个官方的网站下载SDL源码、SDL-Image的源码、SGE的源码,注意我使用的Lib库中没有使用TrueType功能,所以没有下载相应的源代码,这就需要在源码中将相应的宏定义define一下(下面说明)
    2.在
SDL源码的文件夹中有一个VisualCE的压缩文件,解压后,打开相应的工程文件(原来的是EVC4的,需要进行转化一下),SDL-Image的源码和SGE的源代码加入其中,将SDL_image.h和SGE中的.h文件加入SDL中的Include目录。
    3.原有的工程的属性是PPC2003的,需要转化成WinCE5.0,这一部分,将会遇到不少的问题:常见的问题的解决的方法是:
ppc2003移植到wm5.0 易犯错误
http://blog.csdn.net/williamvon/archive/2009/01/24/3852440.aspx
    4.在SDL.h中加入#define _SGE_NOTTF,不使用相应的
TrueType功能
    5.编译生成SDL.lib和SDL.dll
    下面是我生成的WinCE5.0下的SDL的LIB、DLL库以及相应的Include的文件

文件:LIB.rar
大小:333KB
下载:下载
   
1.3测试代码段
    步骤  
    1.Include相应的文件2.引入相应的Lib库3.将DLL拷贝到相应的生成目录4.创建一个WinCE5.0的MFC工程,在OnDraw中加入如下代码段。
头文件:

#include "include/SDL.h"
#include "include/sge.h"

OnDraw中加入

bool bRet = true;
    if (bRet)
    {
        SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO);

        /* Set window title */
        SDL_WM_SetCaption("Testing", "testing");
        /* Initialize the display */
        SDL_Surface *screen;
        screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
        //绘制反锯齿直线

        sge_AALine(screen,50,50, 800,460,255,0,0);
        SDL_Event event;
        do{
            /* Wait for user input */
            SDL_WaitEvent(&event);
            if(event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE)
                break;
            if(event.type == SDL_QUIT)
                break;
        }while(true);
        SDL_Quit();
        bRet = false;
    }

效果:在终端上出现相应的反锯齿直线!!,成功
关于OpenGLES在WInCE上的使用,见下一篇文章
今天要抓紧毕设,测试服务器了,加油!!
阅读(3288) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

GilBert19872010-07-18 14:14:57

SDL_mixer没有编译过...

chinaunix网友2010-07-11 19:26:13

谢谢您的文章,SDL已经编程成功了,wince 600 中winuser.h没有 WM_WINDOWPOSCHANGING ,被我注释掉了,另外添加了 两个secchk.lib ccrtrtti.lib lib文件 和预处理 /MACHINE:THUMB 标识,编译完就可以了!,似乎比您编译出来的lib 和dll小一点,不过可以用了,谢谢 pls:SDL_image SDL_mixer似乎难编译一些,目前功能够用,就没有尝试,楼主有这编译后的东东吗?

GilBert19872010-07-08 22:42:59

不好意思,这个好久没弄了,没有相应的工程文件了

chinaunix网友2010-07-08 18:11:41

太牛了,能将编译后的工程发给我吗?sdl_image的,水平太低了,看到那些编译错误我实在没辙了,我的平台是ce6.0 arm 邮箱:boby653@gmail.com,谢谢啦!!!