mirror of https://github.com/axmolengine/axmol.git
Merge pull request #2318 from Yodesoft/master
Reduce function call in nativeInitBitmapDC to improve performance.
This commit is contained in:
commit
b72bfdfcb3
|
@ -85,7 +85,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// ARGB -> RGBA
|
// ARGB -> RGBA
|
||||||
unsigned int swapAlpha(unsigned int value)
|
inline unsigned int swapAlpha(unsigned int value)
|
||||||
{
|
{
|
||||||
return ((value << 8 & 0xffffff00) | (value >> 24 & 0x000000ff));
|
return ((value << 8 & 0xffffff00) | (value >> 24 & 0x000000ff));
|
||||||
}
|
}
|
||||||
|
@ -148,20 +148,21 @@ extern "C"
|
||||||
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxBitmap_nativeInitBitmapDC(JNIEnv* env, jobject thiz, int width, int height, jbyteArray pixels)
|
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxBitmap_nativeInitBitmapDC(JNIEnv* env, jobject thiz, int width, int height, jbyteArray pixels)
|
||||||
{
|
{
|
||||||
int size = width * height * 4;
|
int size = width * height * 4;
|
||||||
cocos2d::sharedBitmapDC().m_nWidth = width;
|
cocos2d::BitmapDC& bitmapDC = cocos2d::sharedBitmapDC();
|
||||||
cocos2d::sharedBitmapDC().m_nHeight = height;
|
bitmapDC.m_nWidth = width;
|
||||||
cocos2d::sharedBitmapDC().m_pData = new unsigned char[size];
|
bitmapDC.m_nHeight = height;
|
||||||
env->GetByteArrayRegion(pixels, 0, size, (jbyte*)cocos2d::sharedBitmapDC().m_pData);
|
bitmapDC.m_pData = new unsigned char[size];
|
||||||
|
env->GetByteArrayRegion(pixels, 0, size, (jbyte*)bitmapDC.m_pData);
|
||||||
|
|
||||||
// swap data
|
// swap data
|
||||||
unsigned int *tempPtr = (unsigned int*)cocos2d::sharedBitmapDC().m_pData;
|
unsigned int *tempPtr = (unsigned int*)bitmapDC.m_pData;
|
||||||
unsigned int tempdata = 0;
|
unsigned int tempdata = 0;
|
||||||
for (int i = 0; i < height; ++i)
|
for (int i = 0; i < height; ++i)
|
||||||
{
|
{
|
||||||
for (int j = 0; j < width; ++j)
|
for (int j = 0; j < width; ++j)
|
||||||
{
|
{
|
||||||
tempdata = *tempPtr;
|
tempdata = *tempPtr;
|
||||||
*tempPtr++ = cocos2d::sharedBitmapDC().swapAlpha(tempdata);
|
*tempPtr++ = bitmapDC.swapAlpha(tempdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue