SDL在win32平台与Linux平台下的一些差别


最近在学习Linux,主要考虑到跨平台开发。我一直都在思考关于中文输入的问题,在win32下解决起来那么麻烦,难道SDL的作者会不解决吗──如果是bug的话。事实证明,在Linux平台下,我们自己把GB2312往Unicode转换的工作就多余了。当前Linux内部用的就是UTF-8(我的系统是Debian 4.0),SDL的TTF函数完全可以正常工作。不过,在Linux下面也会有些问题,现在发现的有这些,大家有发现的继续帮我补充哈。

1、在Linux下,TTF_RenderUTF8_Blended 是可以正常渲染简体中文的。但是不知道为什么,Solid的渲染会报错,共享(动态链接)库的问题。

2、在Linux下,mid文件用SDL_mixer是打不开的。至少我的情况是这样,我装了ALSA的声卡驱动,不知道还需要做些什么才能放midi。

3、直接装了ALSA的驱动播放SDL_mixer是有噪音的。解决方法,也是打开Linux下软件混音(ESD)的方法如下:

混音可以让两种音乐同时播放,首先需要安装libesd-alsa0,用Synaptic或sudo apt-get install等方式都可以进行安装,它就在Ubuntu官方软件库中。然后,用sudo gedit或您喜欢的文本编辑器创建文件

/etc/asound.conf
pcm.card0 {
type hw
card 0
}

pcm.!default {
type plug
slave.pcm "dmixer"
}

pcm.dmixer {
type dmix
ipc_key 1025
slave {
pcm "hw:0,0"
period_time 0
period_size 1024
buffer_size 4096
periods 128
rate 44100
}
bindings {
0 0
1 1
}
}

接下来,运行"sudo gedit /etc/esound/esd.conf",将文件改成下面的内容:

auto_spawn=1
spawn_options=-terminate -nobeeps -as 2 -d default
spawn_wait_ms=100
# default options are used in spawned and non-spawned mode
default_options=

属实挺麻烦的。(作者:龙飞)

相关内容