我在 sdl2 上加载 bmp 图像时遇到问题

Posted

技术标签:

【中文标题】我在 sdl2 上加载 bmp 图像时遇到问题【英文标题】:I have a problem to load a bmp image on sdl2 【发布时间】:2022-01-02 21:34:11 【问题描述】:

我觉得上传图片有问题 tmp 等于 null

tmp 0x00000000 SDL_Surface * 问题可能来自我加载 bmp 的路径,这就是为什么我放了整个路径

#include "main.h"

int main(int argc, char* argv)

    SDL_Window* window = NULL;
    SDL_Renderer* renderer = NULL;
    SDL_Texture* image = NULL;
    int statut = EXIT_FAILURE;
    SDL_Color blanc =  255, 255, 255, 255 ;
    if (0 != init(&window, &renderer, 640, 480)) /* *ecrire cette fonction */
        goto Quit;

   image = loadImage("C:\\workspace\\projet\\MadocWord\\back.bmp", renderer); /* ecrire cette fonction*/
    if (NULL == image)
        goto Quit;

    statut = EXIT_SUCCESS;
   setWindowColor(renderer, blanc); /* *ecrire cette fonction* */
    SDL_RenderPresent(renderer);
    SDL_Delay(3000);

Quit:
    if (NULL != image)
        SDL_DestroyTexture(image);
    if (NULL != renderer)
        SDL_DestroyRenderer(renderer);
    if (NULL != window)
        SDL_DestroyWindow(window);
    SDL_Quit();
    return statut;

SDL_Texture* loadImage(const char path[], SDL_Renderer* renderer)

    SDL_Surface* tmp = NULL;
    SDL_Texture* texture = NULL;
    tmp = SDL_LoadBMP(path);
    if (NULL == tmp)
    
        fprintf(stderr, "Erreur SDL_LoadBMP : %s", SDL_GetError());
        return NULL;
    
    texture = SDL_CreateTextureFromSurface(renderer, tmp);
    SDL_FreeSurface(tmp);
    if (NULL == texture)
    
        fprintf(stderr, "Erreur SDL_CreateTextureFromSurface : %s", SDL_GetError());
        return NULL;
    
    return texture;

但这也不起作用。同样的错误。是不是我写错了,或者漏掉了一部分?

【问题讨论】:

SDL_LoadBMP 失败时,SDL_GetError() 会说什么? @Martin 【参考方案1】:

几个观察结果。

项目拼写错误。这是故意的吗? image = loadImage("C:\workspace\projet\MadocWord\back.bmp", 渲染器); 我知道转义反斜杠对于 C 中的输出是必需的,它是用于 SDL_LoadBMP 的吗?数组路径是否正确地将其传送到 LoadBMP? 如果您正在使用工作区,听起来您正在使用 Eclipse。以后的版本使用 eclipse-workspace。您对通往图片的道路有信心吗?

只是大声思考。

【讨论】:

以上是关于我在 sdl2 上加载 bmp 图像时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

无法加载 .bmp 文件 win32 [重复]

BMP 纹理不显示

使用 JavaFX 将 BMP 加载到字节数组中

例外:SDL2:无法加载图像 - 在 android 上运行 kivy apk 时

用 SDL2 加载PNG平铺背景并显示前景

SDL2 (C++) 并非所有 .png 图像都能正确呈现