归档 2010年4月

最后更新于 .

呃,之前在linux下编译过vim,这次由于gvim默认不支持python,所以心血来潮想要想在windows编译一下gvim,好吧,这纯属找虐…… 一.准备工作: 1.Mingw,我用的版本是5.1.4 2.vim的源码文件 到ftp://ftp.vim.org/pub/vim/pc/ 下载到vim72src.zip, vim72rt.zip, vim72lang.zip三个文件。 下载完之后, 把 vim72src.zp 和 vim72lang.zip 解压到 D:\makevim,查看D:\makevim\vim\vim72 这样的目录结构, 包含src,lang等目录。 vim72rt.zip的有些独特,先不要解压,直接打开看,里面vim\vim72下面会有autoload之类的文件和目录。新建一个目录D:\makevim\vim ...

最后更新于 .

哇咔咔,今天没事在小众软件上逛,居然被我发现了一个用vim发邮件的插件,废话不多少,先上图~ 成功 OK,按顺序介绍一下。 一.实现功能     1.发送文本     2.发送文件 二.安装方法     1.到http://www.vim.org/scripts/script.php?script_id=26 下载压缩包     2.打开dsw项目文件,用vc6.0或者vs2005编译生成vimmailr.dll,并将这个文件放到环境变量中有的路径中     3.把vimmailr.vim放到C盘下(或者其他路径)     4.在vimrc文件中加入如下代码:

    let $MYEMAIL="dantezhu@tencent.com"     source c:\vimmailr.vim     ...

最后更新于 .

最近在编译项目的时候,出现的multiple definition的错误。仔细排查了.h文件的define定义等,最后发现是自己定义类的时候写法有问题。因为这个问题浪费了很长时间,所以特别记在这里。
做测试如下:
新建一个目录firstdef,在其中创建文件firstdef.h,代码如下:


#ifndef _FIRSTDEF_H_
#define _FIRSTDEF_H_
#include
#include
#include
#include
using namespace std;
class CFirstDef
{
public:
void Show();
void Error();
void Test()
{
printf("Test\n");
}
};
void CFirstDef::Show()
{
printf("OK\n");
}
#endif

对应建立firstdef.cpp,代码如下:


#include "firstdef.h"
void CFirstDef::Error()
{
printf("Error\n ...

最后更新于 .

最近比较忙,周末又和老婆一起出去旅游,所以近期没有写多少文章,还望各位读者海涵~~ 由于一些原因,今天本来打算写的文章没有办法发布,所以先写一篇比较轻量的应用热一下身,最近要写的Vim相关文章比较多哇~~ 这次主要是想给大家介绍一下vim的一个插件snipmate,链接如下: http://www.vim.org/scripts/script.php?script_id=2540 对于代码段补全,snipmate还是非常有用的(虽然可能会降低你的记忆力)。 现在我们来假设一个场景,平常大家都是怎么写出一个函数实现的呢? 如

int Test() {     //光标在这里 }

好吧,我想应该是这样,先写出一个

int Test() {}

然后ESC,h,o,ESC,j,o 极其麻烦~ 怎么解决?在c.snippets中加入如下代码:

snippet {}     {         ${1}     }

这样,当你在c/c++文件中写完

int Test ...

最后更新于 .

在公司突发奇想,想把自己使用vim时的常用操作录下来,希望对大家有所帮助~ 用到了几个插件,也有一些自己定义的功能,在我的博客里都可以找到相应的介绍。

e 

对于录屏中我使用的插件,欢迎竞猜,竞猜无奖,纯属娱乐,哈哈~~

最后更新于 .

好吧,vim中毒愈深,最近设计页面也开始用vim画图,上图先~~

vim中毒愈深

哈哈,其实还是很不错的~~关键是连画图都不用鼠标啦~

要实现这个功能也比较简单,www.vim.org上有两个相关的插件,一个是sketch.vim,一个是drawit.vim

对于sketch.vim,看名字就知道,他主要是想实现草图的功能,所以使用鼠标来画图的,也可以实现一些很复杂的图形,但是有个缺点就是当快速的拖动鼠标的时候,直线会夹杂一些空白的地方,所以被我无情抛弃。

再来看drawit.vim,普通模式下 \di是启动,\ds是关闭,用上下左右键就可以进行直线绘图,用home,end,pgup,pgdn,就可以实现斜线的绘制~~总而言是还是非常棒滴!

另外和大家分享一下,有同事问我怎么快速的画出一个多行表格,其实还是很简单啦,其实多行的话,无非是y一行,然后p 多行;多列的话,就是ctrl+v进入列模式,然后还是y,p就行。

OK,就这样~wordpress的后台总是打不开,所以第一次尝试用windows ...

最后更新于 .

OpenGL的图像处理功能不可谓不强大,但是本身却不提供文字的显示和处理能力,所以我们只有借助于第三方的库来完成这个功能。这里介绍windows下如何在OpenGL里完成中文(当然也包括其他单字节字符了)的正常显示。
这里介绍windows的一个API函数:wglUseFontBitmapsW() ,函数的声明如下:

WINGDIAPI BOOL WINAPI wglUseFontBitmapsW(HDC, DWORD, DWORD, DWORD);

网上很多人都说wglUseFontBitmaps()函数无法显示中文,其实我们只要用wglUseFontBitmapsW()就好了,这个函数即宽字节版本,这样就可以对双字节字符进行正确处理。不过在调用函数前需要将字符串转成宽字节字符,这里调用MultiByteToWideChar()即可。函数的参数说明如下:
第一个参数是HDC,只要知道调用wglGetCurrentDC函数,就可以得到一个HDC了,这是一个windows的显示设备号。
第二个参数表示第一个要产生的字符。
第三个参数表示要产生字符的总个数。
第四个参数表示第一个字符所对应显示列表的编号。假如这里填1000,则第一个字符的绘制命令将被装到第1000号显示列表,第二个字符的绘制命令将被装到第1001号显示列表,依次类推。
下面是显示中文字符的函数:
void drawCNString(const char* str)
{
    int len, i;
    wchar_t* wstring;
    HDC hDC = wglGetCurrentDC(); //获取显示设备
    GLuint list ...

最后更新于 .

在3D游戏中,碰撞检测算得上是最复杂也是最影响游戏效果的环节了,这里简单介绍一下如何在OGRE引擎里实现简单的碰撞检测。

话不多说,先贴代码:


bool EdenCollisionManager::Collide()
{
bool collide=false;
m_KeyObject=*(m_ResearchObject.begin());  // m_Keyobjects是待检测的物体(游戏角色)
Ogre::AxisAlignedBox AABB = m_KeyObject->getWorldBoundingBox(true);  // 获取包围盒
m_AABBSceneQuery->setBox(AABB);  // 以包围盒建立场景查询
m_AABBSceneQuery->setQueryMask(ENTITY_QUERY_MASK); // 设置查询标识
Ogre::SceneQueryResult& results = m_AABBSceneQuery->execute();  // 获取查询结果
Ogre::SceneQueryResultMovableList::iterator iter = results.movables.begin();
if(results.movables.empty())
return false ...

每日归档

上个月

2010年3月

下个月

2010年5月

归档