Cairo,SDL在iOS平台的编译,运行

从网上下了个blobsallad(点击打开链接)的代码,很有趣,准备移植到iOS平台上。


程序需要Cairo,SDL,首先编译这他们的iOS平台库。


SDL 1.3天然支持iOS的编译,不在话下。


编译Cairo:

Cairo又依赖libpng,pixman,下载这两个库的源代码。

模拟器编译安装 libpng pixman

./configure CC="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -std=c99 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/" AR="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar" 

一切顺利,但是不适用于Cairo的编译,于是,一遍一遍的试,关掉了N多特性后,编译成功:

./configure CC="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc -std=gnu99 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/ -miphoneos-version-min=5.0" AR="/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar" --enable-xlib=no --enable-xlib-xrender=no --enable-ft=no --enable-script=no --enable-ps=no --enable-pdf=no --enable-svg=no --enable-trace=no --enable-interpreter=no --enable-png=no


真机编译:

armv6:

./configure --host=arm-apple-darwin10 CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -std=gnu99 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk"


./configure --host=arm-apple-darwin10 CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -std=gnu99 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/" --enable-xlib=no --enable-xlib-xrender=no --enable-ft=no --enable-script=no --enable-ps=no --enable-pdf=no --enable-svg=no --enable-trace=no --enable-interpreter=no --enable-png=no

armv7:

./configure --host=arm-apple-darwin10 CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -std=gnu99 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk"


./configure --host=arm-apple-darwin10 CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc -std=gnu99 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/" --enable-xlib=no --enable-xlib-xrender=no --enable-ft=no --enable-script=no --enable-ps=no --enable-pdf=no --enable-svg=no --enable-trace=no --enable-interpreter=no --enable-png=no


新建iOS工程。

把编译好的cairo.a,sdl.a,pixman.a拖到工程里。

添加几个framework: audiotoolbox, audiocore,  quartzcore, opengles

第一次编译代码,出错。

原因是blob用的SDL 1.2,一些API在1.3上有修改。

现学现用,根据API名字猜功能,做了些改动,可以运行,但可能方法不规范,麻烦请指正。

1.3不在支持surface的直接绘制,而是采用windows,render控制。

surface和render之间也没找到直接的联系,于是就用了texture这个间接联系。

1.在bs_cairo.c里面,创建screen,修改为:

    SDL_Window *window = SDL_CreateWindow(NULL, 0, 0, width, height,
                     SDL_WINDOW_SHOWN);
    
    pCairoSdl->pRender = SDL_CreateRenderer(window, -1, 0);
    
    if (pCairoSdl->pRender == NULL) {
        fprintf(stderr, "SDL_CreateSoftwareRenderer failed: %s\n", SDL_GetError()); 
        exit(1); 
    }
    
    pCairoSdl->pScreen = SDL_CreateRGBSurface (SDL_SWSURFACE,  width,  height, 32, 0,0,0,0);
    
  if(pCairoSdl->pScreen == NULL)
  {
    fprintf(stderr, "SDL_SetVideoMode failed: %s\n", SDL_GetError()); 
    exit(1); 
  }
    
    pCairoSdl->pTexture = SDL_CreateTextureFromSurface(pCairoSdl->pRender, pCairoSdl->pScreen);
    if(pCairoSdl->pTexture == NULL)
    {
        fprintf(stderr, "SDL_CreateTextureFromSurface failed: %s\n", SDL_GetError()); 
        exit(1); 
    }

2.bs_main绘制:

    SDL_DestroyTexture(pMainData->pCairoSdl->pTexture);
    pMainData->pCairoSdl->pTexture = SDL_CreateTextureFromSurface( pMainData->pCairoSdl->pRender, pMainData->pCairoSdl->pScreen);
    
    SDL_RenderCopy(pMainData->pCairoSdl->pRender, pMainData->pCairoSdl->pTexture, &srcRect, &dstRect);
        
    SDL_RenderPresent(pMainData->pCairoSdl->pRender);

大功告成:



Cairo是一个用于2D图形绘制的开源库,它可以被用于Microsoft的Visual Studio 2013编译环境中。通过在VS2013中编译Cairo,你可以在Windows平台上使用Cairo的各种功能。 首先,你需要确保你的计算机上已经安装了Visual Studio 2013开发环境。然后,你可以从Cairo的官方网站上下载源代码,或者使用Git从源代码库中克隆源代码。 接下来,你需要创建一个新的项目,在项目中包含Cairo的源代码。打开Visual Studio 2013,点击“文件”菜单,然后选择“新建”->“项目”。在弹出的对话框中选择“Visual C++”->“空项目”,并为项目指定一个名称和位置。 然后,你需要将Cairo的源代码添加到项目中。右键点击项目名称,选择“添加”->“现有项”,然后选择Cairo的源代码文件,点击“添加”按钮将其添加到项目中。 在项目中添加Cairo的源代码后,你需要在项目的属性中设置编译选项。右键点击项目名称,选择“属性”,在弹出的属性对话框中找到“配置属性”->“C/C++”->“常规”->“附加包含目录”,在该字段中添加Cairo的头文件所在的目录。 然后,你需要设置链接选项。在属性对话框中选择“链接器”->“常规”->“附加库目录”,并将Cairo库文件所在的目录添加到该字段中。同时,在“输入”->“附加依赖项”字段中添加Cairo库文件的名称。 最后,你可以编写你的应用程序代码并进行编译。在项目中创建一个源文件,在代码中包含Cairo的头文件,然后使用Cairo库提供的函数和接口进行图形绘制。 通过按下F5键或点击“生成”->“生成解决方案”来编译运行项目。如果你没有错误和警告信息,说明编译成功。你可以使用Cairo库提供的函数和接口来创建各种图形效果,如直线,矩形,圆形等等。 总之,通过在Visual Studio 2013中编译Cairo,你可以利用Cairo库的强大功能,开发出各种2D图形应用程序,并在Windows平台运行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值