es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tengo un problema para cargar una imagen BMP en SDL2.

Siento que tengo un problema para cargar mi imagen
tmp es igual a null

tmp 0x00000000 SDL_Surface *
el problema puede venir de mi ruta para cargar el bmp, por eso pongo toda la ruta

incluye “main.h”

int main(int argc, char* argv)
{
    SDL_Window* ventana = NULL;
    SDL_Renderer* renderizador = NULL;
    SDL_Texture* imagen = NULL;
    int resultado = EXIT_FAILURE;
    SDL_Color blanco = { 255, 255, 255, 255 };
    if (0 != init(&ventana, &renderizador, 640, 480)) /* *escribe esta función */
        goto Salir;

   imagen = loadImage("C:\\workspace\\projet\\MadocWord\\back.bmp", renderizador); /* escribir esta función */
    if (NULL == imagen)
        goto Salir;

    resultado = EXIT_SUCCESS;
   setWindowColor(renderizador, blanco); /* *escribe esta función* */
    SDL_RenderPresent(renderizador);
    SDL_Delay(3000);

Salir:
    if (NULL != imagen)
        SDL_DestroyTexture(imagen);
    if (NULL != renderizador)
        SDL_DestroyRenderer(renderizador);
    if (NULL != ventana)
        SDL_DestroyWindow(ventana);
    SDL_Quit();
    return resultado;
}
SDL_Texture* loadImage(const char path[], SDL_Renderer* renderizador)
{
    SDL_Surface* tmp = NULL;
    SDL_Texture* textura = NULL;
    tmp = SDL_LoadBMP(path);
    if (NULL == tmp)
    {
        fprintf(stderr, "Error SDL_LoadBMP : %s", SDL_GetError());
        return NULL;
    }
    textura = SDL_CreateTextureFromSurface(renderizador, tmp);
    SDL_FreeSurface(tmp);
    if (NULL == textura)
    {
        fprintf(stderr, "Error SDL_CreateTextureFromSurface : %s", SDL_GetError());
        return NULL;
    }
    return textura;
}

pero esto tampoco funcionó. Mismo error. ¿He escrito algo mal o me he perdido alguna parte?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en el código proporcionado, el problema podría ser que la ruta no es correcta. Se recomienda usar barras diagonales en lugar de barras invertidas ya que las barras invertidas se pueden utilizar como caracteres de escape en C. Además, asegúrese de que el archivo realmente exista en la ruta especificada.

    Otra sugerencia sería utilizar un depurador o declaraciones de impresión para verificar el valor de path y tmp en varios puntos durante la ejecución del programa para ver dónde exactamente ocurre el problema.

Comments are closed.