摘要:
cocos2d-x-使用fopen函数读取assets里的内容导致crash2012年11月25日 Alex Zhou发表评论阅读评论7,613 人阅读 最近把win32和ios上运行成功的游戏移植到android时,程序直接挂了,查到原因是:使用fopen读取assets里的数据会导致应用crash,因为数据已经被压缩打包进apk文件里了。解决办法:1.使用cocos2d-x提供的CCFileUtils工具类2.把assets中的文件读取出来复制到/data/data/you_app_packagename/或者sd卡目录下,然后再使用fopen函数读取。下面来看看如何使用CCFile. 阅读全文
摘要:
边缘触发(Edge Trigger)和条件触发(Level Trigger)概述边缘触发 是指每当状态变化时发生一个io事件; 条件触发 是只要满足条件就发生一个io事件; 详述 int select(int n, fd_set *rd_fds, fd_set *wr_fds, fd_set *ex_fds, struct timeval *timeout); select用到了fd_set结构,此处有一个FD_SETSIZE决定fd_set的容量,FD_SETSIZE默认1024,可以通过ulimit -n或者setrlimit函数修改之。 int poll(struct pollfd 阅读全文
摘要:
高精度计时器2010-12-28 21:28:34|分类:Game|字号订阅 以前写游戏时习惯用QueryPerformanceFrequency和QueryPerformanceCounter来做高精度计时器。DirectX SDK自带的DXUT中有个CDXUTTimer就是这么用的。很多应用都会建立在高精度计时器上,计时器的精度可以在一定程度上影响游戏帧率的准确、稳定。 但要注意QueryPerformanceFrequency函数在多核CPU上是有猫腻的: On a multiprocessor computer, it should not matter which proces. 阅读全文
摘要:
libev和libevent区别风河 Common2013-10-29 两者都是事件驱动编程库,对于它们之间的区别,看了stackoverflow上libev的作者Marc Lehmann的解释,有所了解。简单说libev对libevent做了改进和精简。libevent使用全局变量,导致非线程安全。它的watcher结构也过大,把I/O、计时器、信号句柄整合在一起。而且(作者认为)libevent的附加组件如http和dns库都实现不好,且有安全问题。libev对这些地方做了改进,避免使用全局变量,拆分watcher等。另外libev去掉了外部库(比如http和dns),只专注于事件驱动 阅读全文
摘要:
CDHtmlDialog探索----Javascript与窗体交互CDHtmlDialog提供了C++与网页的双向交互,通此一系统简单的宏调用可以把网页中各元素的事件直接映射到C++程序中,而在网页中调用C++功能代码就显的不那么直观了。归根结底交互的基理就是实现相应COM接口。实现方式如下:1、在窗体初始化时调用EnableAutomation函数。 通常情况下是放在窗体的构造函数中,EnableAutomation();当然也可以放在OnInitDialog中,不过要注意顺序,其调用不应该晚于对SetExternalDispatch的调用。此函数在底层的实现就是引用到正确的IDispat. 阅读全文