Merge pull request #6384 from dabingnn/v3_optimize

change tab to space for CCDirector.cpp
This commit is contained in:
James Chen 2014-04-28 09:54:43 +08:00
commit cbcf2e2bc8
2 changed files with 82 additions and 82 deletions

View File

@ -201,38 +201,38 @@ Director::~Director(void)
void Director::setDefaultValues(void) void Director::setDefaultValues(void)
{ {
Configuration *conf = Configuration::getInstance(); Configuration *conf = Configuration::getInstance();
// default FPS // default FPS
double fps = conf->getValue("cocos2d.x.fps", Value(kDefaultFPS)).asDouble(); double fps = conf->getValue("cocos2d.x.fps", Value(kDefaultFPS)).asDouble();
_oldAnimationInterval = _animationInterval = 1.0 / fps; _oldAnimationInterval = _animationInterval = 1.0 / fps;
// Display FPS // Display FPS
_displayStats = conf->getValue("cocos2d.x.display_fps", Value(false)).asBool(); _displayStats = conf->getValue("cocos2d.x.display_fps", Value(false)).asBool();
// GL projection // GL projection
std::string projection = conf->getValue("cocos2d.x.gl.projection", Value("3d")).asString(); std::string projection = conf->getValue("cocos2d.x.gl.projection", Value("3d")).asString();
if (projection == "3d") if (projection == "3d")
_projection = Projection::_3D; _projection = Projection::_3D;
else if (projection == "2d") else if (projection == "2d")
_projection = Projection::_2D; _projection = Projection::_2D;
else if (projection == "custom") else if (projection == "custom")
_projection = Projection::CUSTOM; _projection = Projection::CUSTOM;
else else
CCASSERT(false, "Invalid projection value"); CCASSERT(false, "Invalid projection value");
// Default pixel format for PNG images with alpha // Default pixel format for PNG images with alpha
std::string pixel_format = conf->getValue("cocos2d.x.texture.pixel_format_for_png", Value("rgba8888")).asString(); std::string pixel_format = conf->getValue("cocos2d.x.texture.pixel_format_for_png", Value("rgba8888")).asString();
if (pixel_format == "rgba8888") if (pixel_format == "rgba8888")
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA8888);
else if(pixel_format == "rgba4444") else if(pixel_format == "rgba4444")
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGBA4444);
else if(pixel_format == "rgba5551") else if(pixel_format == "rgba5551")
Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB5A1); Texture2D::setDefaultAlphaPixelFormat(Texture2D::PixelFormat::RGB5A1);
// PVR v2 has alpha premultiplied ? // PVR v2 has alpha premultiplied ?
bool pvr_alpha_premultipled = conf->getValue("cocos2d.x.texture.pvrv2_has_alpha_premultiplied", Value(false)).asBool(); bool pvr_alpha_premultipled = conf->getValue("cocos2d.x.texture.pvrv2_has_alpha_premultiplied", Value(false)).asBool();
Texture2D::PVRImagesHavePremultipliedAlpha(pvr_alpha_premultipled); Texture2D::PVRImagesHavePremultipliedAlpha(pvr_alpha_premultipled);
} }
void Director::setGLDefaultValues() void Director::setGLDefaultValues()
@ -359,7 +359,7 @@ void Director::calculateDeltaTime()
} }
float Director::getDeltaTime() const float Director::getDeltaTime() const
{ {
return _deltaTime; return _deltaTime;
} }
void Director::setOpenGLView(GLView *openGLView) void Director::setOpenGLView(GLView *openGLView)
{ {
@ -367,9 +367,9 @@ void Director::setOpenGLView(GLView *openGLView)
if (_openGLView != openGLView) if (_openGLView != openGLView)
{ {
// Configuration. Gather GPU info // Configuration. Gather GPU info
Configuration *conf = Configuration::getInstance(); Configuration *conf = Configuration::getInstance();
conf->gatherGPUInfo(); conf->gatherGPUInfo();
CCLOG("%s\n",conf->getInfo().c_str()); CCLOG("%s\n",conf->getInfo().c_str());
if(_openGLView) if(_openGLView)
@ -721,7 +721,7 @@ static void GLToClipTransform(Matrix *transformOut)
Director* director = Director::getInstance(); Director* director = Director::getInstance();
CCASSERT(nullptr != director, "Director is null when seting matrix stack"); CCASSERT(nullptr != director, "Director is null when seting matrix stack");
Matrix projection; Matrix projection;
projection = director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION); projection = director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION);
#if CC_TARGET_PLATFORM == CC_PLATFORM_WP8 #if CC_TARGET_PLATFORM == CC_PLATFORM_WP8
@ -729,7 +729,7 @@ static void GLToClipTransform(Matrix *transformOut)
projection = Director::getInstance()->getOpenGLView()->getReverseOrientationMatrix() * projection; projection = Director::getInstance()->getOpenGLView()->getReverseOrientationMatrix() * projection;
#endif #endif
Matrix modelview; Matrix modelview;
modelview = director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); modelview = director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
*transformOut = projection * modelview; *transformOut = projection * modelview;
} }
@ -737,37 +737,37 @@ static void GLToClipTransform(Matrix *transformOut)
Vector2 Director::convertToGL(const Vector2& uiPoint) Vector2 Director::convertToGL(const Vector2& uiPoint)
{ {
Matrix transform; Matrix transform;
GLToClipTransform(&transform); GLToClipTransform(&transform);
Matrix transformInv; Matrix transformInv;
transform.invert(&transformInv); transform.invert(&transformInv);
// Calculate z=0 using -> transform*[0, 0, 0, 1]/w // Calculate z=0 using -> transform*[0, 0, 0, 1]/w
float zClip = transform.m[14]/transform.m[15]; float zClip = transform.m[14]/transform.m[15];
Size glSize = _openGLView->getDesignResolutionSize(); Size glSize = _openGLView->getDesignResolutionSize();
Vector4 clipCoord(2.0f*uiPoint.x/glSize.width - 1.0f, 1.0f - 2.0f*uiPoint.y/glSize.height, zClip, 1); Vector4 clipCoord(2.0f*uiPoint.x/glSize.width - 1.0f, 1.0f - 2.0f*uiPoint.y/glSize.height, zClip, 1);
Vector4 glCoord; Vector4 glCoord;
//transformInv.transformPoint(clipCoord, &glCoord); //transformInv.transformPoint(clipCoord, &glCoord);
transformInv.transformVector(clipCoord, &glCoord); transformInv.transformVector(clipCoord, &glCoord);
float factor = 1.0/glCoord.w; float factor = 1.0/glCoord.w;
return Vector2(glCoord.x * factor, glCoord.y * factor); return Vector2(glCoord.x * factor, glCoord.y * factor);
} }
Vector2 Director::convertToUI(const Vector2& glPoint) Vector2 Director::convertToUI(const Vector2& glPoint)
{ {
Matrix transform; Matrix transform;
GLToClipTransform(&transform); GLToClipTransform(&transform);
Vector4 clipCoord; Vector4 clipCoord;
// Need to calculate the zero depth from the transform. // Need to calculate the zero depth from the transform.
Vector4 glCoord(glPoint.x, glPoint.y, 0.0, 1); Vector4 glCoord(glPoint.x, glPoint.y, 0.0, 1);
transform.transformVector(glCoord, &clipCoord); transform.transformVector(glCoord, &clipCoord);
Size glSize = _openGLView->getDesignResolutionSize(); Size glSize = _openGLView->getDesignResolutionSize();
float factor = 1.0/glCoord.w; float factor = 1.0/glCoord.w;
return Vector2(glSize.width*(clipCoord.x*0.5 + 0.5) * factor, glSize.height*(-clipCoord.y*0.5 + 0.5) * factor); return Vector2(glSize.width*(clipCoord.x*0.5 + 0.5) * factor, glSize.height*(-clipCoord.y*0.5 + 0.5) * factor);
} }
const Size& Director::getWinSize(void) const const Size& Director::getWinSize(void) const
@ -819,7 +819,7 @@ void Director::replaceScene(Scene *scene)
{ {
CCASSERT(_runningScene, "Use runWithScene: instead to start the director"); CCASSERT(_runningScene, "Use runWithScene: instead to start the director");
CCASSERT(scene != nullptr, "the scene should not be null"); CCASSERT(scene != nullptr, "the scene should not be null");
if (_nextScene) if (_nextScene)
{ {
if (_nextScene->isRunning()) if (_nextScene->isRunning())
@ -888,24 +888,24 @@ void Director::popToSceneStackLevel(int level)
if (level >= c) if (level >= c)
return; return;
// pop stack until reaching desired level // pop stack until reaching desired level
while (c > level) while (c > level)
{ {
auto current = _scenesStack.back(); auto current = _scenesStack.back();
if (current->isRunning()) if (current->isRunning())
{ {
current->onExitTransitionDidStart(); current->onExitTransitionDidStart();
current->onExit(); current->onExit();
} }
current->cleanup(); current->cleanup();
_scenesStack.popBack(); _scenesStack.popBack();
--c; --c;
} }
_nextScene = _scenesStack.back(); _nextScene = _scenesStack.back();
_sendCleanupToScene = false; _sendCleanupToScene = false;
} }
void Director::end() void Director::end()
@ -1103,7 +1103,7 @@ void Director::getFPSImageData(unsigned char** datapointer, ssize_t* length)
{ {
// XXX fixed me if it should be used // XXX fixed me if it should be used
*datapointer = cc_fps_images_png; *datapointer = cc_fps_images_png;
*length = cc_fps_images_len(); *length = cc_fps_images_len();
} }
void Director::createStatsLabel() void Director::createStatsLabel()

View File

@ -73,7 +73,7 @@ const char* GLProgram::UNIFORM_NAME_TIME = "CC_Time";
const char* GLProgram::UNIFORM_NAME_SIN_TIME = "CC_SinTime"; const char* GLProgram::UNIFORM_NAME_SIN_TIME = "CC_SinTime";
const char* GLProgram::UNIFORM_NAME_COS_TIME = "CC_CosTime"; const char* GLProgram::UNIFORM_NAME_COS_TIME = "CC_CosTime";
const char* GLProgram::UNIFORM_NAME_RANDOM01 = "CC_Random01"; const char* GLProgram::UNIFORM_NAME_RANDOM01 = "CC_Random01";
const char* GLProgram::UNIFORM_NAME_SAMPLER = "CC_Texture0"; const char* GLProgram::UNIFORM_NAME_SAMPLER = "CC_Texture0";
const char* GLProgram::UNIFORM_NAME_ALPHA_TEST_VALUE = "CC_alpha_value"; const char* GLProgram::UNIFORM_NAME_ALPHA_TEST_VALUE = "CC_alpha_value";
// Attribute names // Attribute names
@ -140,7 +140,7 @@ bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar*
if (!compileShader(&_vertShader, GL_VERTEX_SHADER, vShaderByteArray)) if (!compileShader(&_vertShader, GL_VERTEX_SHADER, vShaderByteArray))
{ {
CCLOG("cocos2d: ERROR: Failed to compile vertex shader"); CCLOG("cocos2d: ERROR: Failed to compile vertex shader");
return false; return false;
} }
} }
@ -150,7 +150,7 @@ bool GLProgram::initWithByteArrays(const GLchar* vShaderByteArray, const GLchar*
if (!compileShader(&_fragShader, GL_FRAGMENT_SHADER, fShaderByteArray)) if (!compileShader(&_fragShader, GL_FRAGMENT_SHADER, fShaderByteArray))
{ {
CCLOG("cocos2d: ERROR: Failed to compile fragment shader"); CCLOG("cocos2d: ERROR: Failed to compile fragment shader");
return false; return false;
} }
} }
@ -246,11 +246,11 @@ bool GLProgram::compileShader(GLuint * shader, GLenum type, const GLchar* source
if (! status) if (! status)
{ {
GLsizei length; GLsizei length;
glGetShaderiv(*shader, GL_SHADER_SOURCE_LENGTH, &length); glGetShaderiv(*shader, GL_SHADER_SOURCE_LENGTH, &length);
GLchar* src = (GLchar *)malloc(sizeof(GLchar) * length); GLchar* src = (GLchar *)malloc(sizeof(GLchar) * length);
glGetShaderSource(*shader, length, nullptr, src); glGetShaderSource(*shader, length, nullptr, src);
CCLOG("cocos2d: ERROR: Failed to compile shader:\n%s", src); CCLOG("cocos2d: ERROR: Failed to compile shader:\n%s", src);
if (type == GL_VERTEX_SHADER) if (type == GL_VERTEX_SHADER)
{ {
@ -285,26 +285,26 @@ void GLProgram::bindAttribLocation(const char* attributeName, GLuint index) cons
void GLProgram::updateUniforms() void GLProgram::updateUniforms()
{ {
_uniforms[UNIFORM_P_MATRIX] = glGetUniformLocation(_program, UNIFORM_NAME_P_MATRIX); _uniforms[UNIFORM_P_MATRIX] = glGetUniformLocation(_program, UNIFORM_NAME_P_MATRIX);
_uniforms[UNIFORM_MV_MATRIX] = glGetUniformLocation(_program, UNIFORM_NAME_MV_MATRIX); _uniforms[UNIFORM_MV_MATRIX] = glGetUniformLocation(_program, UNIFORM_NAME_MV_MATRIX);
_uniforms[UNIFORM_MVP_MATRIX] = glGetUniformLocation(_program, UNIFORM_NAME_MVP_MATRIX); _uniforms[UNIFORM_MVP_MATRIX] = glGetUniformLocation(_program, UNIFORM_NAME_MVP_MATRIX);
_uniforms[UNIFORM_TIME] = glGetUniformLocation(_program, UNIFORM_NAME_TIME); _uniforms[UNIFORM_TIME] = glGetUniformLocation(_program, UNIFORM_NAME_TIME);
_uniforms[UNIFORM_SIN_TIME] = glGetUniformLocation(_program, UNIFORM_NAME_SIN_TIME); _uniforms[UNIFORM_SIN_TIME] = glGetUniformLocation(_program, UNIFORM_NAME_SIN_TIME);
_uniforms[UNIFORM_COS_TIME] = glGetUniformLocation(_program, UNIFORM_NAME_COS_TIME); _uniforms[UNIFORM_COS_TIME] = glGetUniformLocation(_program, UNIFORM_NAME_COS_TIME);
_uniforms[UNIFORM_RANDOM01] = glGetUniformLocation(_program, UNIFORM_NAME_RANDOM01); _uniforms[UNIFORM_RANDOM01] = glGetUniformLocation(_program, UNIFORM_NAME_RANDOM01);
_uniforms[UNIFORM_SAMPLER] = glGetUniformLocation(_program, UNIFORM_NAME_SAMPLER); _uniforms[UNIFORM_SAMPLER] = glGetUniformLocation(_program, UNIFORM_NAME_SAMPLER);
_flags.usesP = _uniforms[UNIFORM_P_MATRIX] != -1; _flags.usesP = _uniforms[UNIFORM_P_MATRIX] != -1;
_flags.usesMV = _uniforms[UNIFORM_MV_MATRIX] != -1; _flags.usesMV = _uniforms[UNIFORM_MV_MATRIX] != -1;
_flags.usesMVP = _uniforms[UNIFORM_MVP_MATRIX] != -1; _flags.usesMVP = _uniforms[UNIFORM_MVP_MATRIX] != -1;
_flags.usesTime = ( _flags.usesTime = (
_uniforms[UNIFORM_TIME] != -1 || _uniforms[UNIFORM_TIME] != -1 ||
_uniforms[UNIFORM_SIN_TIME] != -1 || _uniforms[UNIFORM_SIN_TIME] != -1 ||
_uniforms[UNIFORM_COS_TIME] != -1 _uniforms[UNIFORM_COS_TIME] != -1
); );
_flags.usesRandom = _uniforms[UNIFORM_RANDOM01] != -1; _flags.usesRandom = _uniforms[UNIFORM_RANDOM01] != -1;
this->use(); this->use();
@ -340,10 +340,10 @@ bool GLProgram::link()
} }
_vertShader = _fragShader = 0; _vertShader = _fragShader = 0;
#if DEBUG || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) #if DEBUG || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
glGetProgramiv(_program, GL_LINK_STATUS, &status); glGetProgramiv(_program, GL_LINK_STATUS, &status);
if (status == GL_FALSE) if (status == GL_FALSE)
{ {
CCLOG("cocos2d: ERROR: Failed to link program: %i", _program); CCLOG("cocos2d: ERROR: Failed to link program: %i", _program);
@ -629,7 +629,7 @@ void GLProgram::setUniformsForBuiltins()
Director* director = Director::getInstance(); Director* director = Director::getInstance();
CCASSERT(nullptr != director, "Director is null when seting matrix stack"); CCASSERT(nullptr != director, "Director is null when seting matrix stack");
Matrix matrixMV; Matrix matrixMV;
matrixMV = director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); matrixMV = director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
setUniformsForBuiltins(matrixMV); setUniformsForBuiltins(matrixMV);
@ -650,19 +650,19 @@ void GLProgram::setUniformsForBuiltins(const Matrix &matrixMV)
setUniformLocationWithMatrix4fv(_uniforms[UNIFORM_MVP_MATRIX], matrixMVP.m, 1); setUniformLocationWithMatrix4fv(_uniforms[UNIFORM_MVP_MATRIX], matrixMVP.m, 1);
} }
if(_flags.usesTime) { if(_flags.usesTime) {
Director *director = Director::getInstance(); Director *director = Director::getInstance();
// This doesn't give the most accurate global time value. // This doesn't give the most accurate global time value.
// Cocos2D doesn't store a high precision time value, so this will have to do. // Cocos2D doesn't store a high precision time value, so this will have to do.
// Getting Mach time per frame per shader using time could be extremely expensive. // Getting Mach time per frame per shader using time could be extremely expensive.
float time = director->getTotalFrames() * director->getAnimationInterval(); float time = director->getTotalFrames() * director->getAnimationInterval();
setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_TIME], time/10.0, time, time*2, time*4); setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_TIME], time/10.0, time, time*2, time*4);
setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_SIN_TIME], time/8.0, time/4.0, time/2.0, sinf(time)); setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_SIN_TIME], time/8.0, time/4.0, time/2.0, sinf(time));
setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_COS_TIME], time/8.0, time/4.0, time/2.0, cosf(time)); setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_COS_TIME], time/8.0, time/4.0, time/2.0, cosf(time));
} }
if(_flags.usesRandom) if(_flags.usesRandom)
setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_RANDOM01], CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1()); setUniformLocationWith4f(_uniforms[GLProgram::UNIFORM_RANDOM01], CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1());
} }