前几天,在开发项目的时候,程序中需要使用一串文本,这串文本必须用unicode来输入。但是,编译器又不支持unicode编码,搞得这个编码必须写成字节形式。刚开始我就手动的处理了一下,不想后来可能要变动。虽然再后来换了一种方法,不使用这个方式了。但一想万一哪一天图个简便,又需要这种方式了,说不定也还有用的。所以就整理了个命令行的小脚本。脚本内容也极为简单:
标签: 转换
语言陷阱:C++继承的转换
起了个很壮观的名字,也就是说,有点招摇撞骗的感觉。我想将这部分做一个系列,但有不想与别的太重合。嗯,这个系列的来源是这样的,平时总有人问我,xxx为什么无法编译通过,明明是对的,有些时候,我也这样问自己。从概念上来说,一些问题是不应该出现的,但却实际出现了,理论和实际总会出现一些冲突的。因此,我希望将一些平时我们不注意的细节记录下来,让我们在出现类似问题的时候可以寻找到答案,减少我们所犯的错误。
目前我电脑还没有安装完开发环境,所以,今天的开始只是一个回忆的开始,从我能记住的开始。改天将代码的实际测试结果和错误结果给出。
在C++中,继承很是强大,我们可以通过继承来扩展类型,但扩展是否有限制呢?先看下面的一组代码:
void copy(int* a, int* b) { } void copy(byte* a, byte* b) { } class CBase() { public: CBase(){} virtual ~CBase(){} } class Child: public CBase { public: Child(){}; virtual ~Child(){}; } void copy(CBase** a, CBase** b) { } void main() { CBase** temp1 = new Child*[10]; Child** temp2 = new Child*[10]; copy(temp1, temp2); }
opengl es 1.x坐标转换
开发2D游戏的时候,opengl的坐标系统的原点在窗口左下角,与其他的坐标系统不一致。我使用下面的方法来进行转换:
glViewport(0, 0, backingWidth, backingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, (float)backingWidth, 0, (float)backingHeight, 0, 100);
/*
改变坐标系方向为windows的坐标系
(0,0)---x++
|
|
|
y++
*/
glTranslatef((float)0, (float)backingHeight, 0);
glRotatef(180.0f, 1.0f, 0.0f, 0.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
上面的方法对opengles 1.x是有效果的,2.0使用GLSL的话,貌似没有效果(我在一个未发布的手机的sdk上进行测试的,不过,也可能是sdk的问题,因为sdk还是beta版本,里面问题多多)。