上次在参考研究mobile sdk 6.0中自带的DDraw例子时发现在模拟器上跑到创建后备缓冲时由于不支持DDSCAPS_BACKBUFFER而导致程序不能运行,google了一通发现m$网站和其他一些论坛上也有人问过类似问题,得到的答案貌似是说emlator上不能跑DDraw和D3D的程序,要测只能用device,其实只要自己实现一个创建后备缓冲以及用blit模拟flip的方式就可以在模拟器上跑了,并不是模拟器根本就没有实现DDraw,只是没有实现硬件后备缓冲、翻转等操作(其实在现在的PC模拟器上的这2种方式应该也没有什么效率上的差异吧)。
具体代码:
Continue reading…
Nokia官网Sound Mixer Example v2.1中用的wav文件格式
Nokia官网提供的混音示例程序中http://www.forum.nokia.com/info/sw.nokia.com/id/650db12f-06aa-4608-b17a-387b70412304/S60_Platform_Sound_Mixer_Example_v2_1_en.zip.html使用的wav格式为16-bit mono的标准pcm采样文件的纯采样数据部分(这样好处是去掉了wav头信息,减少了一定的容量,坏处就是不能用一般的播放器直接播放),以下为生成该种wav的方法:
Continue reading…
windows mobile中的directdraw
今天说研究一下mobile的游戏开发吧,先从2d这块入手。查到资料说早期是用一种叫做gapi的接口作的,但后来被directdraw取代了,那就用dd吧,好在以前研究过pc的,找了个例子看了看基本差不多,可发现模拟器上无法运行,因为后备缓冲不支持,真是麻烦了啊,调试只能用真机了?
Symbian项目build pkg时出现unknown line的一个可能原因
项目的sis打包配置文件pkg由于需要写入中文,所以编码该文件的编码被设置为UTF-16,但CVS好像对unicode的支持不是很好,在将pkg识别为文本模式的情况进行代码同步等操作时会对换行符进行替换处理,导致pkg文件的换行符出现异常,makesis解析的时候就会出现提示第1行的unknown line错误(直接在carbide.c++中打开pkg文件看不出错误,用notepad看所有换行位置都被替换成了错误字符!)。
解决方法可以将pkg换成使用二进制方式传输(自己没试,应该没问题,而且文本模式下只要不让处理换行符也没问题),或者使用WinHEX等16进制编辑器将错误pkg中的所有00 0D 0A 00 0D 0A替换成00 0D 00 0A正确的UTF-16换行符就可以了。
找了个VPN代理,把Akismet启用了!
Akismet装好wp的时候就自带的一个插件,看描述是个过滤垃圾评论的东西,无奈由于无法访问wordpress官方网站导致api key注册不能,一直没有启用。最近的垃圾评论让我很郁闷,于是找了个代理注册了个api key,把这个插件启用了,看看效果如何。
发现wordpress的版本更新功能做的非常方便
今天在后台管理的时候,发现wp有新版本,直接点了上方提示的链接后就自动下载压缩包,然后解压升级就搞定了,实在是方便啊。想想以前用movabletype的时候还要折腾,这种方法多省心,不知道以后会不会由于自动更新导致问题?
symbian alpha blending的问题
symbian系统api中对alpha混合的实现不是很好,至少不是很灵活,比如必须配合256级灰度mask图等,如果只是想填充半透明的矩形区域的话这样显然比较浪费内存。比较好的方法是自己实现类似矩形半透明填充等的算法,也就是那个src*alpha+(1-alpha)*dst的alpha混合算法,通过一些多项式合并以及用整数运算代替浮点运算的方法,可以对其执行效率有一定的优化,在内存允许的情况下,使用查表的方式可以对速度有更进一步的提高。另一个问题是,对于N95类ARMv6架构的CPU来说,如何在生成exe的时候使编译器支持armv6指令从而使用simd对alpha混合等大量像素级的数据运算进行并行优化?目前研究了一段时间也没发现carbide上能启用armv6的方式,我想是由于需要对N73类同为3rd的机型的兼容吧。
一篇Mac OS下的GL中glFlush和glFinish的区别解释
Q: What’s the difference between glFlush() and glFinish()?
A: OpenGL commands are not executed immediately. Instead, they are submitted to a command buffer that is then fed into to the hardware. The glFlush() and glFinish() commands are both used to force submission of the command buffer to the hardware for execution. glFlush() causes all OpenGL commands currently queued to be submitted to the hardware for execution. This function returns immediately after having transferred the pending OpenGL command queue to the hardware (or software) renderer. These commands are queued for execution in some finite amount of time, but glFlush() does not block waiting for command completion.
[ZT]CMWAP 和CMNET 的主要区别与适用范围
如果你是一个菜鸟或者初学者,不妨直接跳到第(4)节,看看我提供的”应用程序能否工作于CMWAP的辨别方法”;如果你希望对CMWAP和CMNET有一个详细的了解,那么就读完全篇吧;如果你对这个问题有所研究的话,还请不吝赐教,解开仍旧困惑我的几个疑问。