mirror of https://github.com/axmolengine/axmol.git
fixed #649 the user could save any domain of the render texture
This commit is contained in:
parent
3a3a52c59a
commit
4a8e3f468e
|
@ -314,8 +314,8 @@ bool CCRenderTexture::getUIImageFromBuffer(CCImage *pImage, int x, int y, int nW
|
||||||
int nMaxTextureSize = 0;
|
int nMaxTextureSize = 0;
|
||||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &nMaxTextureSize);
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &nMaxTextureSize);
|
||||||
|
|
||||||
nReadBufferWidth = ccNextPOT(nSavedBufferWidth);
|
nReadBufferWidth = ccNextPOT(tx);
|
||||||
nReadBufferHeight = ccNextPOT(nSavedBufferHeight);
|
nReadBufferHeight = ccNextPOT(ty);
|
||||||
|
|
||||||
CC_BREAK_IF(0 == nReadBufferWidth || 0 == nReadBufferHeight);
|
CC_BREAK_IF(0 == nReadBufferWidth || 0 == nReadBufferHeight);
|
||||||
CC_BREAK_IF(nReadBufferWidth > nMaxTextureSize || nReadBufferHeight > nMaxTextureSize);
|
CC_BREAK_IF(nReadBufferWidth > nMaxTextureSize || nReadBufferHeight > nMaxTextureSize);
|
||||||
|
@ -324,7 +324,7 @@ bool CCRenderTexture::getUIImageFromBuffer(CCImage *pImage, int x, int y, int nW
|
||||||
|
|
||||||
this->begin();
|
this->begin();
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, 1);
|
glPixelStorei(GL_PACK_ALIGNMENT, 1);
|
||||||
glReadPixels(x,y,nReadBufferWidth,nReadBufferHeight,GL_RGBA,GL_UNSIGNED_BYTE, pTempData);
|
glReadPixels(0,0,nReadBufferWidth,nReadBufferHeight,GL_RGBA,GL_UNSIGNED_BYTE, pTempData);
|
||||||
this->end();
|
this->end();
|
||||||
|
|
||||||
// to get the actual texture data
|
// to get the actual texture data
|
||||||
|
@ -332,7 +332,7 @@ bool CCRenderTexture::getUIImageFromBuffer(CCImage *pImage, int x, int y, int nW
|
||||||
for (int i = 0; i < nSavedBufferHeight; ++i)
|
for (int i = 0; i < nSavedBufferHeight; ++i)
|
||||||
{
|
{
|
||||||
memcpy(&pBuffer[i * nSavedBufferWidth * 4],
|
memcpy(&pBuffer[i * nSavedBufferWidth * 4],
|
||||||
&pTempData[(nSavedBufferHeight - i - 1) * nReadBufferWidth * 4],
|
&pTempData[(y + nSavedBufferHeight - i - 1) * nReadBufferWidth * 4 + x * 4],
|
||||||
nSavedBufferWidth * 4);
|
nSavedBufferWidth * 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue