【问题标题】:SDL_Texture from IMG_Load() fails to draw?IMG_Load() 中的 SDL_Texture 无法绘制?
【发布时间】:2019-10-09 17:08:48
【问题描述】:

我看到的只有 RenderDrawColor。

“circle.png”也在正确的文件夹中(main.cpp 所在的位置)。

#include <SDL.h>
#include <SDL_Image.h>

int main(int argc,char* args[]) {
    SDL_Init(SDL_INIT_EVERYTHING);
    IMG_Init(IMG_INIT_PNG);
    SDL_Window* window = SDL_CreateWindow("_", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    SDL_Renderer* render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
    SDL_SetRenderDrawColor(render,0, 255, 255, 255);
    SDL_Surface* img = IMG_Load("circle.png");
    SDL_Texture* texture = SDL_CreateTextureFromSurface(render, img);
    SDL_FreeSurface(img);

    SDL_Event event;
    while (1) {
        while (SDL_PollEvent(&event)) {
            switch (event.type) {
            case SDL_QUIT:
                return 0;
            }
        }
    SDL_RenderClear(render);
    SDL_RenderCopy(render, texture, NULL, NULL);
    SDL_RenderPresent(render);
    }

    system("PAUSE");
    return 0;
}   

【问题讨论】:

  • 您已经验证(使用调试器/printf()/等)img & texture 不为 NULL?
  • int img_flag = IMG_INIT_PNG; if (!(IMG_Init(img_flag) &amp; img_flag)) { std::cout &lt;&lt; "error"; }; 输出错误。

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


【解决方案1】:

必须将 zlib1.dll 和 libpng16-16.dll 包含在与 cpp 相同的文件夹中。

libpng16-16.dll 依赖于 zlib1.dll。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2020-11-18
    • 2018-12-27
    相关资源
    最近更新 更多