cocos2dx 2.1.4 程序运行脉络解析3—解析CCEGLView

这篇主要是要解决上一篇遗留下的突出问题:

回忆上两篇分析程序运行时有这么几个函数很容易混淆,我按照顺序先一次将他们列出来:

main函数:

CCEGLView* eglView = CCEGLView::sharedOpenGLView();

    eglView->setViewName("HelloCpp");
    eglView->setFrameSize(2048, 1536);///设置frame的大小,标号1
    // The resolution of ipad3 is very large. In general, PC's resolution is smaller than it.
    // So we need to invoke 'setFrameZoomFactor'(only valid on desktop(win32, mac, linux)) to make the window smaller.
    eglView->setFrameZoomFactor(0.4f);///设置view frame的缩放比例,标号2


AppDelegate::applicationDidFinishLaunching()函数:

    CCDirector* pDirector = CCDirector::sharedDirector();//初始化director
    CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
    pDirector->setOpenGLView(pEGLView);///设置关联到director中并设置director的winSizeInPoints属性与view的resolutionSize相等,标号3
// Set the design resolution
pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);///设置view的分辨率,标号4

... ...

pDirector->setContentScaleFactor(...)///设置director的缩放比例,标号5


归纳一下,对于缩放比例一共有3种:

1.CCEGLViewProtocol中的 m_fScaleX,m_fScaleY

2.CCEGLView 的 frameZoomFactor:m_fFrameZoomFactor

3.CCDirector的 m_fContentScaleFactor

我带着分不清这3中scale的疑惑来解析下面的东西:


好!先看CCEGLViewProtocol

里面的最重要的函数:

进行相关设置后director会重新设置投影矩阵:


在设置投影矩阵前它先设置了screen map的viewPort:


至于director的m_fContentScaleFactor,查看代码它只设置完属性后将坐下脚的label进行了相关的处理而且其他模块也没有用到该属性值,所以就无视他吧~~~

给出他的代码:

先写到这,分析代码的东西都分析完毕,以后有时间贴几个测试的结果上去,感谢看完这篇文章的淫~~~

有错误欢迎之处哈!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值