65,211
社区成员
发帖
与我相关
我的任务
分享
void GDrawScaleBuffer(int * destPtr, int * sourcePtr, bool fillAlpha, int sWidth, int sHeight, int dWidth, int dHeight)
{
int sourceWidth = sWidth;
int sourceHeight = sHeight;
int destWidth = dWidth;
int destHeight = dHeight;
int * sourceBuffer = sourcePtr;
int * destBuffer = destPtr;
int * tempSourceBuffer = sourceBuffer;
int sourceStride = sizeof(int);
int destStride = sizeof(int);
for (int y = 0; y < destHeight; y++)
{
int trueY = sourceHeight * y / destHeight;
for (int x = 0; x < destWidth; x++)
{
int trueX = sourceWidth * x * sourceStride / destWidth;
int trueXDest = x * destStride;
memset(&destBuffer[trueXDest], 0xff, destStride); //崩溃在这个地方!!!
memcpy(&destBuffer[trueXDest], &tempSourceBuffer[trueX], min(sourceStride, destStride));
if (fillAlpha)
{
destBuffer[trueXDest + 3] = 0xff;
}
}
tempSourceBuffer = sourceBuffer + (trueY * sourceWidth * sourceStride);
destBuffer += destWidth * destStride;
}
}
memset(destBuffer, 0xff, destStride); //崩溃在这个地方!!!
memcpy(destBuffer, tempSourceBuffer, min(sourceStride, destStride)); //那我要复制的区域怎么赋值呢?
memset(destBuffer, 0xff, destStride); //崩溃在这个地方!!!
memcpy(destBuffer, tempSourceBuffer, min(sourceStride, destStride));
int * destBuffer = destPtr; //destBuffer是指向int
int destStride = sizeof(int);
memset(&destBuffer[trueXDest], 0xff, destStride); //这样也越界么?