无法在SDL2中对图像进行blitting。我使用 malloc 构建了一个 SDL_Rect 数组,并将每个成员归结为通常的x,y,w(宽度)和h(高度)变量,但图像只是赢了& #39; t出现。奇怪的是,当我通过直接引用元素的索引来尝试在 for 循环之外进行blitting时,它似乎有效。知道发生了什么吗?
//Not Working
int number =5;
for(int i = 0; i < number; i++){
SDL_BlitScaled(myImage, NULL, mySurface, &(myElements[i]));
}
//Works Perfectly
SDL_BlitScaled(myImage, NULL, mySurface, &(myElements[0]));
修改:结束忘记此部分。以下是如何生成数组:
SDL_Rect *myElements;
myElements = (SDL_Rect * ) malloc (number * sizeof(SDL_Rect));
generateGroup(myElements, number, 10, 10, 180, 30);
我在那里打电话的功能如下:
void generateGroup(SDL_Rect* elementArray, int numberElements, int posX, int posY, int width, int height) {
int i;
for(i = 0; i < numberElements; i++) {
elementArray[i].x = posX;
posX = posX + width + 1;
elementArray[i].y = posY;
elementArray[i].w = width;
elementArray[i].h = height;
}
}
为了更准确地描述问题,只有当我在 for 循环之外进行blit时才会出现图像。至于索引,除了0之外,我还尝试过1和2,两者都有效。