From c4496d7b3a2beb913c4560ac5fb4aca202a113f3 Mon Sep 17 00:00:00 2001 From: James Chen Date: Fri, 16 Nov 2012 18:55:57 +0800 Subject: [PATCH] issue #1555: Fixed coordinate conversion errors. It needs to be based on 'Design Resolution Size' rather than 'Frame Size' Please refer to the implementations of CCDirector::convertToGL and CCDirector::convertToUI. --- cocos2dx/CCDirector.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cocos2dx/CCDirector.cpp b/cocos2dx/CCDirector.cpp index d5add9a2faca..a5a2d00d37a5 100644 --- a/cocos2dx/CCDirector.cpp +++ b/cocos2dx/CCDirector.cpp @@ -455,7 +455,7 @@ CCPoint CCDirector::convertToGL(const CCPoint& uiPoint) // Calculate z=0 using -> transform*[0, 0, 0, 1]/w kmScalar zClip = transform.mat[14]/transform.mat[15]; - CCSize glSize = m_pobOpenGLView->getFrameSize(); + CCSize glSize = m_pobOpenGLView->getDesignResolutionSize(); kmVec3 clipCoord = {2.0*uiPoint.x/glSize.width - 1.0, 1.0 - 2.0*uiPoint.y/glSize.height, zClip}; kmVec3 glCoord; @@ -474,7 +474,7 @@ CCPoint CCDirector::convertToUI(const CCPoint& glPoint) kmVec3 glCoord = {glPoint.x, glPoint.y, 0.0}; kmVec3TransformCoord(&clipCoord, &glCoord, &transform); - CCSize glSize = m_pobOpenGLView->getFrameSize(); + CCSize glSize = m_pobOpenGLView->getDesignResolutionSize(); return ccp(glSize.width*(clipCoord.x*0.5 + 0.5), glSize.height*(-clipCoord.y*0.5 + 0.5)); }