当我使用 SDL_RECT 时,Surface 消失了
Surface dissapears when I use SDL_RECT
我正在尝试创建一个 class,其中包含我的游戏 SHIP 的信息(目前的图像和位置),一切都按照我的预期进行编译,但是如果我使用 SDL_Rect 变量,我作为 SDL_blitsurface 方法中的参数在我的船内创建,船没有出现。
这是我的代码:
main.cpp
int main()
{
init();
Ship ship;
ship.alive();
Background bg;
SDL_BlitSurface(bg.bg,NULL,screen,NULL);
printf("%i",ship.rect.y);
SDL_BlitSurface(ship.img,&ship.rect,screen,NULL);
SDL_UpdateWindowSurface(window);
SDL_Delay(5000);
return 0;
}
Ship.cpp
Ship::Ship(){
std::string path = "img/arwing2.png";
x = 50;
y = 50;
rect.x = x;
rect.y = y;
rect.w = 300;
rect.y = 300;
img = IMG_Load(path.c_str());
if(img == NULL){
printf("Unable to load image");
}
printf("Hey!!");
}
void Ship::alive(){
printf("I'm alive!");
}
知道我做错了什么吗?
这就是我要的
这是我得到的
我认为你的源和目标 rects 向后。尝试:
SDL_BlitSurface(ship.img, NULL, screen, &ship.rect);
在您的代码中,您提供了源矩形。
这意味着它正在裁剪您的图像以仅显示图像内部 (x,y) 的像素并扩展 (w,h)。
您可能希望提供目标矩形来告诉 SDL_BlitSurface 在哪里绘制它,即屏幕内部的 (x,y)。如下:
SDL_BlitSurface(ship.img, NULL, screen, &ship.rect);
^(src) ^(dest)
我正在尝试创建一个 class,其中包含我的游戏 SHIP 的信息(目前的图像和位置),一切都按照我的预期进行编译,但是如果我使用 SDL_Rect 变量,我作为 SDL_blitsurface 方法中的参数在我的船内创建,船没有出现。
这是我的代码:
main.cpp
int main()
{
init();
Ship ship;
ship.alive();
Background bg;
SDL_BlitSurface(bg.bg,NULL,screen,NULL);
printf("%i",ship.rect.y);
SDL_BlitSurface(ship.img,&ship.rect,screen,NULL);
SDL_UpdateWindowSurface(window);
SDL_Delay(5000);
return 0;
}
Ship.cpp
Ship::Ship(){
std::string path = "img/arwing2.png";
x = 50;
y = 50;
rect.x = x;
rect.y = y;
rect.w = 300;
rect.y = 300;
img = IMG_Load(path.c_str());
if(img == NULL){
printf("Unable to load image");
}
printf("Hey!!");
}
void Ship::alive(){
printf("I'm alive!");
}
知道我做错了什么吗?
这就是我要的
这是我得到的
我认为你的源和目标 rects 向后。尝试:
SDL_BlitSurface(ship.img, NULL, screen, &ship.rect);
在您的代码中,您提供了源矩形。
这意味着它正在裁剪您的图像以仅显示图像内部 (x,y) 的像素并扩展 (w,h)。
您可能希望提供目标矩形来告诉 SDL_BlitSurface 在哪里绘制它,即屏幕内部的 (x,y)。如下:
SDL_BlitSurface(ship.img, NULL, screen, &ship.rect);
^(src) ^(dest)