以后再也不在SDL上浪费时间了(外加SDL hg/2.0 编译SDL_gfx的一些注意事项)

今天又花了4个小时试图使SDL hg在android上运行,无果。从头到尾的黑屏让人绝望。

算了,我错了,越级打怪是我不对,以后再也不敢了。

(我的4个小时啊

关于SDL HG,在网上能找到的资料实在是非常的少了,少到我没能找到一个可以执行的例子(官方文档里20几行的不算)。SDL的图像缩放旋转库SDL_gfx只支持SDL到1.3 想在SDL2.0 或者叫SDL HG上编译SDL_gfx库,还需要直接在源代码里动一些手脚:


================================================================== 

1.    把源代码里的所有(3处)“SDL_MINOR_VERSION == 3” 改为 “SDL_MAJOR_VERSION == 2”.

因为SDL_gfx针对1.3版本做了一些应对,但2.0/hg版本的大版本号是2,小版本号是0,而gfx只检查了小版本号是否为3。我的改动让gfx针对1.3的改动直接在2.0上生效,当然更周全的办法是兼顾1.3和2.0。嘛,不管了

2.    SDL_SetColorKey(src, XXX, k)之类 改为 SDL_SetColorKey(src, SDL_TRUE, k)

新版本就这么定的,没什么道理可讲= =

3.    SDL_SetAlpha(dst, SDL_SRCALPHA, 255)之类 改为 SDL_SetSurfaceAlphaMod( dst, 255)

同上

4.    if (src->flags & SDL_SRCCOLORKEY)  改为  if( SDL_GetColorKey(src, NULL) == 0 )

新版里没有SDL_SRCCOLORKEY这个定义了,colorkey也不是在flags里查了。想看看有没有设定colorkey可以用SDL_GetColorKey(src, NULL). 如果返回0,说明有colorkey,如果返回-1,说明没有colorkey。具体的可以在src/video/SDL_surface.c里看一下SDL_GetColorKey的实现。


5    SDL_CreateRGBSurface(SDL_SWSURFACE | SDL_HWSURFACE | SDL_SRCALPHA,[以下省略]  改为  SDL_CreateRGBSurface(0,[以下省略]

理由是新版文档如此规定的= =

*6    我编译的时候还两个M_PI重复定义的问题,看起来不严重,就是精度有点区别。

==================================================================

把这几处改掉,就可以链接SDL HG/2.0 来编译SDL_gfx了。

sdl用了一年,感觉还是挺小众的东西(资料太少啦!外国人都没几个讨论SDL的!),做游戏所需的很多必备功能都靠别人实现(缩放旋转图像什么的)。当然,SDL的重点是跨平台,当初我就是因为被跨平台的玩家重制版SDL仙剑所吸引,所以开始学SDL的嘛。而且SDL也不光是为游戏服务的,嗯嗯,我懂的,不是SDL不好……

J2ME之后是SDL,我在简单的2D小游戏领域里窝了这么久,也该去大世界透透气了。下一步,去了解一下DirectX(几比较好呢,求推荐>_<),网络通信,sqlite数据库什么的吧~ 垂涎许久的ygocore/ygopro,也该做点什么去靠近它所在的高度啦~

SDL_CreateRGBSurface(SDL_SWSURFACE | SDL_HWSURFACE | SDL_SRCALPHA,



charWidth, charHeight, 32,

Comments

    1. 只是我用的SDL库正好是跨平台的,我想试试。可是,首先android开发我没有仔细研究过,其次这个跨平台需要android的一个更底层的本地开发包NDK(用Cygwin在windows上编译C++代码,然后给android的Java用JNI调用,你说多绕嘴吧…)。这里的NDK我是真的没有用来做过任何东西,完全不懂。linux平台的makefile我也不太熟,不知道哪里链接到了那里没有,最可气的是,我不知道怎么在android程序的C++代码里设置断点调试!连printf这种log函数都不支持,android自己的写log函数我放在main函数第一行都没执行,这我就彻底绝望了啊啊啊啊!

  1. 不喜欢SDL,宁可用更破的HGE……起码后者全面一些。跨平台2D引擎其实挺多的话说。
    学DX的话,推荐从DX9.0C熟悉,之后直接DX11,12就好,让DX10去死吧。
    Android平台的话,推荐COCOS2D。我那有中途整理的文档,可以简单了解下,深入了解还要自己看。

发表评论

电子邮件地址不会被公开。 必填项已用*标注