cocos2d-x 的opengl坐标体系

CCdirector 中的接口setProjection,默认kProjection为kCCDirectorProjection3D

接口内容为:


            float zeye = this->getZEye();


            kmMat4 matrixPerspective, matrixLookup;


// 设置project矩阵(投影矩阵)
            kmGLMatrixMode(KM_GL_PROJECTION);
// 单位矩阵
            kmGLLoadIdentity();


            // issue #1334
// 设置视角60, 宽高比与设计尺寸相同,近截取面和远截取面
            kmMat4PerspectiveProjection( &matrixPerspective, 60, (GLfloat)size.width/size.height, 0.1f, zeye*2);
            // kmMat4PerspectiveProjection( &matrixPerspective, 60, (GLfloat)size.width/size.height, 0.1f, 1500);
// 把project装入opengl
            kmGLMultMatrix(&matrixPerspective);
// 设置model view 矩阵(观察矩阵)
            kmGLMatrixMode(KM_GL_MODELVIEW);
// 单位矩阵
            kmGLLoadIdentity();
            kmVec3 eye, center, up;
// 屏幕坐下为(0,0),向屏幕外为z轴正方向,右手系坐标,也是cocos的坐标系
// 摄像机在,以屏幕中央向外一个眼睛的距离(即h/1.1566)
            kmVec3Fill( &eye, size.width/2, size.height/2, zeye );
// 观察点为屏幕中央
            kmVec3Fill( &center, size.width/2, size.height/2, 0.0f );
// 屏幕向上(y轴正方向)为上
            kmVec3Fill( &up, 0.0f, 1.0f, 0.0f);
// 设置观察矩阵
            kmMat4LookAt(&matrixLookup, &eye, &center, &up);
// 由于fovy角度为60,所以,在z轴0点投影的大小为:上下方向zeye*cot(30)*2
// 因为zeye为h/1.1566,刚好上下方向为h,进而左右为w

            kmGLMultMatrix(&matrixLookup);



在对每个node进行遍历渲染绘制的时候:


//  每个node都首先保存父节点的观察矩阵,在父节点的观察矩阵基础上进行转换,并在退出visit的时候恢复,
    kmGLPushMatrix();

// 转换
    this->transform();

// 绘制

    this->draw();


先看transform

有旋转扭曲缩放平移,暂时还不太理解















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值