CCEGLView是窗口,负责窗口级别的功能管理和实现,在不同的平台上有不同的实现,它继承自CCEGLViewProtocol接口。
在AppDelegate.cpp的applicationDidFinishLaunching方法中有这样一段:
CCDirector *pDirector =CCDirector::sharedDirector();--这句是初始化导演
CCEGLView* pEGLView =CCEGLView::sharedOpenGLView();
CCSize realSize = pEGLView->getFrameSize();--得到设备屏幕大小,因为EGL视图是全屏视图
pDirector->setOpenGLView(pEGLView);--目前我认为这里是给导演一个镜头
CCSize winSize =CCDirector::sharedDirector()->getWinSize();--窗口的逻辑大小
我们来看这个方法里做了什么:
void CCDirector::setOpenGLView(CCEGLView *pobOpenGLView)
{
CCAssert(pobOpenGLView, "opengl view should not be null");
if (m_pobOpenGLView != pobOpenGLView)
{
// EAGLView is not a CCObject
delete m_pobOpenGLView; // [openGLView_ release]
m_pobOpenGLView = pobOpenGLView;
// set size
m_obWinSizeInPoints = m_pobOpenGLView->getDesignResolutionSize();
createStatsLabel();
if (m_pobOpenGLView)
{
setGLDefaultValues();
}
CHECK_GL_ERROR_DEBUG();
m_pobOpenGLView->setTouchDelegate(m_pTouchDispatcher);
m_pTouchDispatcher->setDispatchEvents(true);
}
}
通过上面的方法我们知道:
CCEGLView必须有,且只能有一个。
CCEGLView记录屏幕的逻辑大小。