mirror of https://github.com/axmolengine/axmol.git
fixed #1180: synchronize CCConfiguration
This commit is contained in:
parent
cbfca9d763
commit
f3d97bd9b6
|
@ -32,15 +32,16 @@ using namespace std;
|
|||
|
||||
NS_CC_BEGIN
|
||||
|
||||
CCConfiguration* CCConfiguration::s_gSharedConfiguration = NULL;
|
||||
|
||||
CCConfiguration::CCConfiguration(void)
|
||||
:m_nMaxTextureSize(0)
|
||||
: m_nMaxTextureSize(0)
|
||||
, m_nMaxModelviewStackDepth(0)
|
||||
, m_nMaxTextureUnits(0)
|
||||
, m_bSupportsPVRTC(false)
|
||||
, m_bSupportsNPOT(false)
|
||||
, m_bSupportsBGRA8888(false)
|
||||
, m_bSupportsDiscardFramebuffer(false)
|
||||
, m_bInited(false)
|
||||
, m_uOSVersion(0)
|
||||
, m_nMaxSamplesAllowed(0)
|
||||
, m_pGlExtensions(NULL)
|
||||
{
|
||||
|
@ -56,9 +57,10 @@ bool CCConfiguration::init(void)
|
|||
|
||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &m_nMaxTextureSize);
|
||||
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &m_nMaxTextureUnits);
|
||||
glGetIntegerv(GL_MAX_SAMPLES_APPLE, &m_nMaxSamplesAllowed);
|
||||
|
||||
m_bSupportsPVRTC = checkForGLExtension("GL_IMG_texture_compression_pvrtc");
|
||||
m_bSupportsNPOT = checkForGLExtension("GL_APPLE_texture_2D_limited_npot");
|
||||
m_bSupportsNPOT = true;
|
||||
m_bSupportsBGRA8888 = checkForGLExtension("GL_IMG_texture_format_BGRA888");
|
||||
m_bSupportsDiscardFramebuffer = checkForGLExtension("GL_EXT_discard_framebuffer");
|
||||
|
||||
|
@ -68,58 +70,37 @@ bool CCConfiguration::init(void)
|
|||
CCLOG("cocos2d: GL supports BGRA8888 textures: %s", (m_bSupportsBGRA8888 ? "YES" : "NO"));
|
||||
CCLOG("cocos2d: GL supports NPOT textures: %s", (m_bSupportsNPOT ? "YES" : "NO"));
|
||||
CCLOG("cocos2d: GL supports discard_framebuffer: %s", (m_bSupportsDiscardFramebuffer ? "YES" : "NO"));
|
||||
|
||||
#if CC_TEXTURE_NPOT_SUPPORT
|
||||
CCLOG("cocos2d: compiled with NPOT support: %s", "YES");
|
||||
#else
|
||||
CCLOG("cocos2d: compiled with NPOT support: %s", "NO");
|
||||
#endif // CC_TEXTURE_NPOT_SUPPORT
|
||||
|
||||
|
||||
#if CC_TEXTURE_ATLAS_USE_VAO
|
||||
CCLOG("cocos2d: compiled with VAO support in TextureAtlas : %s", "YES");
|
||||
CCLOG("cocos2d: compiled with Profiling Support: %s",
|
||||
#if CC_ENABLE_PROFILERS
|
||||
|
||||
"YES - *** Disable it when you finish profiling ***"
|
||||
#else
|
||||
CCLOG("cocos2d: compiled with VAO support in TextureAtlas : %s", "NO");
|
||||
#endif // CC_TEXTURE_ATLAS_USE_VAO
|
||||
"NO"
|
||||
#endif
|
||||
);
|
||||
|
||||
#if CC_ENABLE_GL_STATE_CACHE == 0
|
||||
CCLOG("");
|
||||
CCLOG("cocos2d: **** WARNING **** CC_ENABLE_GL_STATE_CACHE is disabled. To improve performance, enable it by editing ccConfig.h");
|
||||
printf("\n");
|
||||
#endif
|
||||
|
||||
CHECK_GL_ERROR_DEBUG();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
CCGlesVersion CCConfiguration::getGlesVersion()
|
||||
{
|
||||
// To get the Opengl ES version
|
||||
std::string strVersion((char *)glGetString(GL_VERSION));
|
||||
if ((int)strVersion.find("1.0") != -1)
|
||||
{
|
||||
return GLES_VER_1_0;
|
||||
}
|
||||
else if ((int)strVersion.find("1.1") != -1)
|
||||
{
|
||||
return GLES_VER_1_1;
|
||||
}
|
||||
else if ((int)strVersion.find("2.0") != -1)
|
||||
{
|
||||
return GLES_VER_2_0;
|
||||
}
|
||||
#if (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX)
|
||||
return GLES_VER_2_0;
|
||||
#else
|
||||
|
||||
|
||||
return GLES_VER_INVALID;
|
||||
#endif
|
||||
}
|
||||
|
||||
CCConfiguration* CCConfiguration::sharedConfiguration(void)
|
||||
{
|
||||
static CCConfiguration sharedConfiguration;
|
||||
if (!sharedConfiguration.m_bInited)
|
||||
if (! s_gSharedConfiguration)
|
||||
{
|
||||
sharedConfiguration.init();
|
||||
sharedConfiguration.m_bInited = true;
|
||||
s_gSharedConfiguration = new CCConfiguration();
|
||||
s_gSharedConfiguration->init();
|
||||
}
|
||||
|
||||
return &sharedConfiguration;
|
||||
return s_gSharedConfiguration;
|
||||
}
|
||||
|
||||
bool CCConfiguration::checkForGLExtension(const string &searchName)
|
||||
|
|
|
@ -32,76 +32,40 @@ THE SOFTWARE.
|
|||
|
||||
NS_CC_BEGIN
|
||||
|
||||
/** OS version definitions.
|
||||
*/
|
||||
enum {
|
||||
kCCiOSVersion_3_0 = 0x03000000,
|
||||
kCCiOSVersion_3_1 = 0x03010000,
|
||||
kCCiOSVersion_3_1_1 = 0x03010100,
|
||||
kCCiOSVersion_3_1_2 = 0x03010200,
|
||||
kCCiOSVersion_3_1_3 = 0x03010300,
|
||||
kCCiOSVersion_3_2 = 0x03020000,
|
||||
kCCiOSVersion_3_2_1 = 0x03020100,
|
||||
kCCiOSVersion_4_0 = 0x04000000,
|
||||
kCCiOSVersion_4_0_1 = 0x04000100,
|
||||
kCCiOSVersion_4_1 = 0x04010000,
|
||||
kCCiOSVersion_4_2 = 0x04020000,
|
||||
kCCiOSVersion_4_3 = 0x04030000,
|
||||
kCCiOSVersion_4_3_1 = 0x04030100,
|
||||
kCCiOSVersion_4_3_2 = 0x04030200,
|
||||
kCCiOSVersion_4_3_3 = 0x04030300,
|
||||
};
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GLES_VER_INVALID,
|
||||
GLES_VER_1_0,
|
||||
GLES_VER_1_1,
|
||||
GLES_VER_2_0,
|
||||
} CCGlesVersion;
|
||||
|
||||
/**
|
||||
@brief CCConfiguration contains some openGL variables
|
||||
@since v0.99.0
|
||||
*/
|
||||
class CC_DLL CCConfiguration : public CCObject
|
||||
{
|
||||
protected:
|
||||
GLint m_nMaxTextureSize;
|
||||
GLint m_nMaxTextureUnits;
|
||||
bool m_bSupportsPVRTC;
|
||||
bool m_bSupportsNPOT;
|
||||
bool m_bSupportsBGRA8888;
|
||||
bool m_bSupportsDiscardFramebuffer;
|
||||
bool m_bInited;
|
||||
unsigned int m_uOSVersion;
|
||||
GLint m_nMaxSamplesAllowed;
|
||||
char * m_pGlExtensions;
|
||||
|
||||
private:
|
||||
|
||||
CCConfiguration(void);
|
||||
|
||||
public:
|
||||
/** returns a shared instance of the CCConfiguration */
|
||||
static CCConfiguration *sharedConfiguration(void);
|
||||
|
||||
public:
|
||||
|
||||
CCGlesVersion getGlesVersion();
|
||||
|
||||
/** OpenGL Max texture size. */
|
||||
inline int getMaxTextureSize(void)
|
||||
{
|
||||
return m_nMaxTextureSize;
|
||||
}
|
||||
|
||||
/** OpenGL Max Modelview Stack Depth. */
|
||||
inline int getMaxModelviewStackDepth(void)
|
||||
{
|
||||
return m_nMaxModelviewStackDepth;
|
||||
}
|
||||
|
||||
/** returns the maximum texture units */
|
||||
/** returns the maximum texture units
|
||||
@since v2.0.0
|
||||
*/
|
||||
inline int getMaxTextureUnits(void)
|
||||
{
|
||||
return m_nMaxTextureUnits;
|
||||
}
|
||||
|
||||
/** Whether or not the GPU supports NPOT (Non Power Of Two) textures.
|
||||
NPOT textures have the following limitations:
|
||||
- They can't have mipmaps
|
||||
- They only accept GL_CLAMP_TO_EDGE in GL_TEXTURE_WRAP_{S,T}
|
||||
OpenGL ES 2.0 already supports NPOT (iOS).
|
||||
|
||||
@since v0.99.2
|
||||
*/
|
||||
|
@ -132,22 +96,25 @@ public:
|
|||
return m_bSupportsDiscardFramebuffer;
|
||||
}
|
||||
|
||||
/** returns the OS version.
|
||||
- On iOS devices it returns the firmware version.
|
||||
- On Mac returns the OS version
|
||||
|
||||
@since v0.99.5
|
||||
*/
|
||||
inline unsigned int getOSVersion() { return m_uOSVersion; }
|
||||
|
||||
/** returns whether or not an OpenGL is supported */
|
||||
bool checkForGLExtension(const std::string &searchName);
|
||||
|
||||
bool init(void);
|
||||
|
||||
public:
|
||||
/** returns a shared instance of the CCConfiguration */
|
||||
static CCConfiguration *sharedConfiguration(void);
|
||||
private:
|
||||
CCConfiguration(void);
|
||||
static CCConfiguration *s_gSharedConfiguration;
|
||||
|
||||
protected:
|
||||
GLint m_nMaxTextureSize;
|
||||
GLint m_nMaxModelviewStackDepth;
|
||||
bool m_bSupportsPVRTC;
|
||||
bool m_bSupportsNPOT;
|
||||
bool m_bSupportsBGRA8888;
|
||||
bool m_bSupportsDiscardFramebuffer;
|
||||
GLint m_nMaxSamplesAllowed;
|
||||
GLint m_nMaxTextureUnits;
|
||||
char * m_pGlExtensions;
|
||||
};
|
||||
|
||||
NS_CC_END
|
||||
|
|
|
@ -34,14 +34,6 @@ CCGrabber::CCGrabber(void)
|
|||
, m_oldFBO(0)
|
||||
{
|
||||
memset(m_oldClearColor, 0, sizeof(m_oldClearColor));
|
||||
m_eGlesVersion = CCConfiguration::sharedConfiguration()->getGlesVersion();
|
||||
|
||||
// If the gles version is lower than GLES_VER_2_0,
|
||||
// all the functions in CCGrabber return directly.
|
||||
if (m_eGlesVersion < GLES_VER_2_0)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
// generate FBO
|
||||
glGenFramebuffers(1, &m_fbo);
|
||||
|
@ -49,13 +41,6 @@ CCGrabber::CCGrabber(void)
|
|||
|
||||
void CCGrabber::grab(CCTexture2D *pTexture)
|
||||
{
|
||||
// If the gles version is lower than GLES_VER_2_0,
|
||||
// all the functions in CCGrabber return directly.
|
||||
if (m_eGlesVersion < GLES_VER_2_0)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &m_oldFBO);
|
||||
|
||||
// bind
|
||||
|
@ -68,7 +53,7 @@ void CCGrabber::grab(CCTexture2D *pTexture)
|
|||
GLuint status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
|
||||
if (status != GL_FRAMEBUFFER_COMPLETE)
|
||||
{
|
||||
CCLOG("Frame Grabber: could not attach texture to frmaebuffer");
|
||||
CCAssert(0, "Frame Grabber: could not attach texture to frmaebuffer");
|
||||
}
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_oldFBO);
|
||||
|
@ -77,15 +62,10 @@ void CCGrabber::grab(CCTexture2D *pTexture)
|
|||
void CCGrabber::beforeRender(CCTexture2D *pTexture)
|
||||
{
|
||||
CC_UNUSED_PARAM(pTexture);
|
||||
// If the gles version is lower than GLES_VER_2_0,
|
||||
// all the functions in CCGrabber return directly.
|
||||
if (m_eGlesVersion < GLES_VER_2_0)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &m_oldFBO);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_fbo);
|
||||
|
||||
// save clear color
|
||||
glGetFloatv(GL_COLOR_CLEAR_VALUE, m_oldClearColor);
|
||||
// BUG XXX: doesn't work with RGB565.
|
||||
|
@ -104,12 +84,6 @@ void CCGrabber::beforeRender(CCTexture2D *pTexture)
|
|||
void CCGrabber::afterRender(cocos2d::CCTexture2D *pTexture)
|
||||
{
|
||||
CC_UNUSED_PARAM(pTexture);
|
||||
// If the gles version is lower than GLES_VER_2_0,
|
||||
// all the functions in CCGrabber return directly.
|
||||
if (m_eGlesVersion < GLES_VER_2_0)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, m_oldFBO);
|
||||
glColorMask(true, true, true, true); // #631
|
||||
|
@ -119,13 +93,6 @@ void CCGrabber::afterRender(cocos2d::CCTexture2D *pTexture)
|
|||
|
||||
CCGrabber::~CCGrabber()
|
||||
{
|
||||
// If the gles version is lower than GLES_VER_2_0,
|
||||
// all the functions in CCGrabber return directly.
|
||||
if (m_eGlesVersion < GLES_VER_2_0)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
CCLOGINFO("cocos2d: deallocing %p", this);
|
||||
glDeleteFramebuffers(1, &m_fbo);
|
||||
}
|
||||
|
|
|
@ -47,7 +47,6 @@ protected:
|
|||
GLuint m_fbo;
|
||||
GLint m_oldFBO;
|
||||
GLfloat m_oldClearColor[4];
|
||||
CCGlesVersion m_eGlesVersion;
|
||||
};
|
||||
|
||||
NS_CC_END
|
||||
|
|
|
@ -183,25 +183,6 @@ Only valid for cocos2d-mac. Not supported on cocos2d-ios.
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/** @def CC_TEXTURE_NPOT_SUPPORT
|
||||
If enabled, NPOT textures will be used where available. Only 3rd gen (and newer) devices support NPOT textures.
|
||||
NPOT textures have the following limitations:
|
||||
- They can't have mipmaps
|
||||
- They only accept GL_CLAMP_TO_EDGE in GL_TEXTURE_WRAP_{S,T}
|
||||
|
||||
To enable set it to a value different than 0. Disabled by default.
|
||||
|
||||
This value governs only the PNG, GIF, BMP, images.
|
||||
This value DOES NOT govern the PVR (PVR.GZ, PVR.CCZ) files. If NPOT PVR is loaded, then it will create an NPOT texture ignoring this value.
|
||||
|
||||
@deprecated This value will be removed in 1.1 and NPOT textures will be loaded by default if the device supports it.
|
||||
|
||||
@since v0.99.2
|
||||
*/
|
||||
#ifndef CC_TEXTURE_NPOT_SUPPORT
|
||||
#define CC_TEXTURE_NPOT_SUPPORT 0
|
||||
#endif
|
||||
|
||||
|
||||
/** @def CC_USE_LA88_LABELS
|
||||
If enabled, it will use LA88 (Luminance Alpha 16-bit textures) for CCLabelTTF objects.
|
||||
|
|
|
@ -1282,7 +1282,6 @@ void CCLabelBMFont::updateLabel()
|
|||
|
||||
if (shift != 0)
|
||||
{
|
||||
int j = 0;
|
||||
for (unsigned j = 0; j < line_length; j++)
|
||||
{
|
||||
index = i + j + lineNumber;
|
||||
|
|
|
@ -96,13 +96,6 @@ CCRenderTexture * CCRenderTexture::renderTextureWithWidthAndHeight(int w, int h)
|
|||
|
||||
bool CCRenderTexture::initWithWidthAndHeight(int w, int h, CCTexture2DPixelFormat eFormat)
|
||||
{
|
||||
// If the gles version is lower than GLES_VER_2_0,
|
||||
// some extended gles functions can't be implemented, so return false directly.
|
||||
if (CCConfiguration::sharedConfiguration()->getGlesVersion() < GLES_VER_2_0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
CCAssert(m_ePixelFormat != kCCTexture2DPixelFormat_A8, "only RGB and RGBA formats are valid for a render texture");
|
||||
|
||||
bool bRet = false;
|
||||
|
|
|
@ -69,11 +69,6 @@ Copyright (C) 2008 Apple Inc. All Rights Reserved.
|
|||
//#define CHECK_GL_ERROR() ({ GLenum __error = glGetError(); if(__error) printf("OpenGL error 0x%04X in %s\n", __error, __FUNCTION__); (__error ? NO : YES); })
|
||||
#define CHECK_GL_ERROR() ({ GLenum __error = glGetError(); if(__error) printf("OpenGL error 0x%04X in %s %d\n", __error, __FUNCTION__, __LINE__); })
|
||||
|
||||
#if DEBUG
|
||||
#define CHECK_GL_ERROR_DEBUG() ({ GLenum __error = glGetError(); if(__error) printf("OpenGL error 0x%04X in %s %d\n", __error, __FUNCTION__, __LINE__); })
|
||||
#else
|
||||
#define CHECK_GL_ERROR_DEBUG()
|
||||
#endif
|
||||
|
||||
/* Optional delegate methods support */
|
||||
#ifndef __DELEGATE_IVAR__
|
||||
|
|
|
@ -250,7 +250,6 @@ void CCSpriteBatchNode::sortAllChildren()
|
|||
int i = 0,j = 0,length = m_pChildren->data->num;
|
||||
CCNode ** x = (CCNode**)m_pChildren->data->arr;
|
||||
CCNode *tempItem = NULL;
|
||||
CCSprite *child = NULL;
|
||||
|
||||
//insertion sort
|
||||
for(i=1; i<length; i++)
|
||||
|
|
|
@ -50,7 +50,6 @@ CCProfiler* CCProfiler::sharedProfiler(void)
|
|||
|
||||
CCProfilingTimer* CCProfiler::createAndAddTimerWithName(const char* timerName)
|
||||
{
|
||||
CCProfiler *p = CCProfiler::sharedProfiler();
|
||||
CCProfilingTimer *t = new CCProfilingTimer();
|
||||
t->initWithName(timerName);
|
||||
m_pActiveTimers->setObject(t, timerName);
|
||||
|
|
|
@ -123,12 +123,6 @@ std::string RenderTextureTestDemo::subtitle()
|
|||
RenderTextureTest::RenderTextureTest()
|
||||
: m_brush(NULL)
|
||||
{
|
||||
if (CCConfiguration::sharedConfiguration()->getGlesVersion() < GLES_VER_2_0)
|
||||
{
|
||||
CCMessageBox("The Opengl ES version is lower than 2.0, and the test may not run correctly.", "Cocos2d-x Hint");
|
||||
return;
|
||||
}
|
||||
|
||||
CCSize s = CCDirector::sharedDirector()->getWinSize();
|
||||
|
||||
// create a render texture, this is what we're going to draw into
|
||||
|
|
|
@ -84,10 +84,10 @@ void TextureCacheTest::addSprite()
|
|||
CCSprite *s15 = CCSprite::spriteWithFile("Images/grossini_dance_14.png");
|
||||
|
||||
// just loading textures to slow down
|
||||
CCSprite *s16 = CCSprite::spriteWithFile("Images/background1.png");
|
||||
CCSprite *s17 = CCSprite::spriteWithFile("Images/background2.png");
|
||||
CCSprite *s18 = CCSprite::spriteWithFile("Images/background3.png");
|
||||
CCSprite *s19 = CCSprite::spriteWithFile("Images/blocks.png");
|
||||
CCSprite::spriteWithFile("Images/background1.png");
|
||||
CCSprite::spriteWithFile("Images/background2.png");
|
||||
CCSprite::spriteWithFile("Images/background3.png");
|
||||
CCSprite::spriteWithFile("Images/blocks.png");
|
||||
|
||||
s1->setPosition(CCPointMake(50, 50));
|
||||
s2->setPosition(CCPointMake(60, 50));
|
||||
|
|
Loading…
Reference in New Issue