键盘的咏叹调

常用链接

统计

最新评论

#

std::string的split函数

void split(std::string& s, std::string& delim,std::vector< std::string >* ret)
{
 size_t last = 0;
 size_t index=s.find_first_of(delim,last);
 while (index!=std::string::npos)
 {
  ret->push_back(s.substr(last,index-last));
  last=index+1;
  index=s.find_first_of(delim,last);
 }
 if (index-last>0)
 {
  ret->push_back(s.substr(last,index-last));
 }
}

posted @ 2008-11-05 16:55 键盘的咏叹调 阅读(9315) | 评论 (0)编辑 收藏

图像倒置问题

给一个比较老的图形引擎添加读取png的功能
使用devil
添加过程很简单,但是发现贴图总是倒的

根据以往的经验
这肯定是和读出来的raw data的字节序有关的
于是老是在调整字节顺序

最后终于发现
读取图片前使用
ilEnable(IL_ORIGIN_SET)后
一切正常。

posted @ 2008-04-11 18:00 键盘的咏叹调 阅读(216) | 评论 (0)编辑 收藏

很烂的gf5200

总的来说nv的5系列的显卡是很烂的系列
nv在6系列之前都是被ati压着。

说说5200这块烂卡
通过测试发现5200的固定管线比可编程管线要快许多
所以,
虽然5200支持到sm2
但是游戏中还是要把它划为和mx440一个等级上去

相同测试在5600和ati9550上执行
均没有发生这样的事情。

特此备忘

posted @ 2008-03-20 23:27 键盘的咏叹调 阅读(167) | 评论 (0)编辑 收藏

关于VC的Unicode

新建一个QT的工程
发现使用的ZIP函数库总是在编译的时候报关于Unicode的错误
我在vs2003下工作的都很顺利

于是很自然的把vs2005的工程设置里面的使用字符集 改成了多字节
再编译,但是问题依旧
。。。。。。。。
。。。。。。。


最后,偶然的打开vs2005的c++设置选项
赫然发现一个unicode的宏定义 在上面

删之,
世界太平

posted @ 2008-03-19 10:31 键盘的咏叹调 阅读(407) | 评论 (0)编辑 收藏

小心DLL的路径

几乎每一本windows编程的书都会告诉你
dll目录的查找顺序

如果你对第三方提供的dll
进行了某些hack
那么请十分注意你的dll的路径

因为windows第一个查找的路径是
windows\system32
如果这个目录中不幸的也有你需要使用的dll
那么你所做的hack将会无用。

posted @ 2008-03-17 13:10 键盘的咏叹调 阅读(225) | 评论 (0)编辑 收藏

奇怪的link错误

前天来制作游戏的离线更新包
突然发现以前很正常的代码突然link错误了
而且Link错误是报库之间的函数冲突libc,libcmtd.lib和微软的函数冲突
弄了半天未果
于是恼怒之下把原来备份的代码翻出来
把cpp和.h替换之后
在编译 又OK了
当时时间紧迫,也没多想。

周一来上班
发现这个问题又出现了,
于是好好的检查了一番。

经过一层层抽丝剥茧
字节比对之后
很偶然的发现
原来是一个cpp文件导致了这个Link的问题

把这个cpp从项目中排除之后
再编译会提示说XXx函数找不到的link错误
然后再把这个cpp包含进来
再编译 就ok了
如果这个时候你把vc2003再关掉
再打开,rebulid
那么错误又会出现。


原因是什么
至今尚未查清。

posted @ 2008-03-17 13:07 键盘的咏叹调 阅读(191) | 评论 (0)编辑 收藏

奇怪的函数跳转

使用d3d Device提供的获得显存的函数
在有的ati低端显卡上得到的数值与实际有较大出入
例如ati 9100
本来就64m显存,通过d3d的函数得到的数字有110m
估计是把agp部分也算进去了
这不是我们想要的。

于是换一个方法
使用ddraw的方法来查询,
经检验这个方法是可行的。

于是修改引擎代码
期间遇到com组件几个问题
最后遇到一个问题
编辑器在初始化引擎的时候有个函数
莫名奇妙的跳转到另外一个函数
久思,
最后原因只能是和刚才添加了一个虚函数,导致编译出来的类的结构已经变了
于是到处查到底是哪里不对,
查到工程的link属性
发现其中指向的目录是分支版本前的目录
又把增量编译给关了
但是问题依旧。
最后又过了半天才想起是include的目录没有改过来。

分支版本真是害死人啊。

教训:
碰到这种问题很明显就是项目的配置问题
一定要仔细检查,
这一次都已经想到是link有问题了
却没有进一步想到include 的问题。

posted @ 2008-03-11 23:31 键盘的咏叹调 阅读(334) | 评论 (0)编辑 收藏

关于debug/release差异

凡是遇到d/r运行结果不一样
或者使用vc调试运行的结果和直接运行Exe的结果不同的
首先需要检查变量是否初始化
尤其是图形方面的程序
先检查相机的各个参数

posted @ 2008-03-07 15:56 键盘的咏叹调 阅读(328) | 评论 (0)编辑 收藏

LoadLibary的问题

今天Load项目的Effect.dll
死活Load不进来
突然想起以前用OD调试程序,
机器上没有OD,不过随vc倒是有depency
打开一看
赫然发现原来是这个Effect.dll的一个依赖的dll没有放进来
于是乎
众DLL归位,一切正常。

posted @ 2008-03-06 22:10 键盘的咏叹调 阅读(229) | 评论 (0)编辑 收藏

(ZT)QT的正则表达式


QRegExp是Qt的正则表达式类.
Qt中有两个不同类的正则表达式.
第一类为元字符.它表示一个或多个常量表达式.
令一类为转义字符,它代表一个特殊字符.
 
一.元字符
.  匹配任意单个字符.例如, 1.3 可能是1. 后面跟任意字符,再跟3
^ 匹配字符串首. 例如, ^12可能是123,但不能是312
$  配字符串尾. 例如, 12$可以是312, 当不能是 123
[] 匹配括号内输入的任意字符.[123]可以为1, 2 或3
*  匹配任意数量的前导字符. 例如, 1*2可以为任意数量个1(甚至没有), 后面跟一个2
+ 匹配至少一个前导字符. 例如, 1+2必须为一个或多个1, 后跟一个2
?  匹配一个前导字符或为空. 例如 1?2可以为1或这12
 
二.统配模式
通过 QRegExp::setPatternSyntax(QRegExp::Wildcard);可以将元字符设置为统配模式.在统配模式下,只有3个元字符可以使用.他们的功能没有变化.
? 匹配任意单个字符, 例如, 1?2可以为1,后面跟任意单个字符, 再跟2
* 匹配任意一个字符序列. 例如, 1*2, 可以为1, 后面跟任意数量的字符, 再跟一个2
[] 匹配一个定义的字符集合. 例如, [a-zA-Z\.]可以匹配 a到z之间任意一个字符和.  [^a]匹配出小写a以外的字符.
 
三.转义序列
\. 匹配"."
\^ 匹配"^"
\$ 匹配"$"
\[ 匹配"["
\] 匹配"]"
\* 匹配"*"
\+ 匹配"+"
\? 匹配"?"
\b 匹配响铃字符,使计算机发出嘟的一声.
\t 制表符号
\n 换行符号
\r  回车符鉿
\s  任意空格
\xnn 匹配16进制为nn的字符
\0nn  匹配8进制的nn字符
这些表达式均以\开始, 与C++的转义字符相同,所以为了定义QRegExp中的一个转义序列,
需要在前面添加两个\\

posted @ 2008-02-18 17:52 键盘的咏叹调 阅读(1932) | 评论 (1)编辑 收藏

仅列出标题
共3页: 1 2 3