今天又花了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,
转战android手机游戏了?
只是我用的SDL库正好是跨平台的,我想试试。可是,首先android开发我没有仔细研究过,其次这个跨平台需要android的一个更底层的本地开发包NDK(用Cygwin在windows上编译C++代码,然后给android的Java用JNI调用,你说多绕嘴吧…)。这里的NDK我是真的没有用来做过任何东西,完全不懂。linux平台的makefile我也不太熟,不知道哪里链接到了那里没有,最可气的是,我不知道怎么在android程序的C++代码里设置断点调试!连printf这种log函数都不支持,android自己的写log函数我放在main函数第一行都没执行,这我就彻底绝望了啊啊啊啊!
我最近也在学android,到时候交流交流。有个nb的老师带我们
咋我的头像还是这个黑框框呢。刚设置了一把gravatar。。。
hacklu买域名了?我打算忙完这阵重新搞个域名了。。= =
不喜欢SDL,宁可用更破的HGE……起码后者全面一些。跨平台2D引擎其实挺多的话说。
学DX的话,推荐从DX9.0C熟悉,之后直接DX11,12就好,让DX10去死吧。
Android平台的话,推荐COCOS2D。我那有中途整理的文档,可以简单了解下,深入了解还要自己看。
用cocosx2d可以在WindowsVC下开发,无代价直接移植Android,IOS上跑。嗯~就素这样推荐。
哦,之前在笃志的空间里看到过cocos教程,原来是移动平台上的东西呀
名字记下了,可以学习学习^_^
常言道,越级打怪经验高(兔斯基飞砖)
没人罩,越级打怪死的早(泪流满面)
早看见博主的文章好了 我昨天废了一天的时间 测试SDL 以为是我程序问题 原来是SDL问题 靠了