SDL窗口-渲染Sprite C ++

时间:2018-12-18 05:57:53

标签: c++ image rendering sdl sdl-2

我不确定渲染精灵时哪里出了问题。在我的讲座中,要渲染PNG,首先必须具有一个将文件加载到的表面,然后必须具有纹理并从该表面创建纹理,然后释放空间然后将其输出?我在哪里错了?可能是文件路径吗?如果是这样,我尝试将完整目录放进去吗?

这是我的代码:

case 2:
{
    //game code..............

    SDL_SetRenderDrawColor(renderer, 255, 210, 0, 0);
    SDL_RenderClear(renderer);

    SDL_Texture* sprite;
    SDL_Texture* blockt;
    SDL_Texture* points;
    SDL_Surface* blockS;
    SDL_Surface* windowS;
    SDL_Surface* temp;

    blockS = IMG_Load("Barriers.png");
    blockt = SDL_CreateTextureFromSurface(renderer, blockS);
    SDL_FreeSurface(blockS);

    SDL_RenderPresent(renderer);
}
break;

尝试忽略临时性和临时性内容,而我只是尝试尝试已看到的不同内容,并在其中保留了一些代码。基本上只需要知道为什么它不起作用。我在顶部还有SDL_INIT_EVERYTHING以及IMG_Init(SDL_INIT_EVERYTHING),并且包含了SDL_image.h标头。

1 个答案:

答案 0 :(得分:2)

您实际上必须使用SDL_RenderCopy(在SDL_RenderPresent之前)绘制纹理。

请注意,一旦有了纹理,则释放原始表面是无关紧要的(尽管您确实希望在某个时候释放它)。使用它所做的不会改变纹理。它们是独立的实体。您所需要做的就是渲染纹理。

此外,请查看Wiki(here's the rendering category page)。它应该使您对可以做什么有更好的了解。