mardi 2 juin 2015

IMG_Load doest work

I was watching this series = https://www.youtube.com/watch?v=2NVgHrOFneg and for some reason for the guy in the video the code works but for me it compiles fine but doesn't load an image. I really don't know what to do

#include "SDL.h"
#include <iostream>
#include "SDL_image.h"

SDL_Texture *LoadTexture(std::string filePath, SDL_Renderer *renderTarget)
{


    SDL_Texture *texture = nullptr;
    SDL_Surface *surface = IMG_Load(filePath.c_str());


    if (surface == NULL)
        std::cout << "Error 1" << std::endl;
    else
    {
        texture = SDL_CreateTextureFromSurface(renderTarget, surface);

        if (texture == NULL)
            std::cout << "Error 2" << std::endl;
    }
    SDL_FreeSurface(surface);

    return texture;
}



int main(int, char *argv[])
{
    const int FPS = 144;
    int frameTime = 0;

    SDL_Window *window = nullptr;

    SDL_Texture *currentImage= nullptr;
    SDL_Renderer *renderTarget = nullptr;
    SDL_Rect playerRect;
    int frameWidth, frameHeight;
    int textureWidth, textureHeight;
    SDL_Init(SDL_INIT_VIDEO );

    int imgFlags = IMG_INIT_PNG | IMG_INIT_JPG;

    if (!(IMG_Init(imgFlags) != imgFlags))

    {
        printf("IMG_Init: Failed to init required jpg and png support!\n");
        printf("IMG_Init: %s\n", IMG_GetError());

    }



    window = SDL_CreateWindow("SDL Pong", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1024, 720, SDL_WINDOW_SHOWN);
    renderTarget = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);

    currentImage = LoadTexture("image.png", renderTarget);
    //
    //currentImage = SDL_LoadBMP("")


    SDL_QueryTexture(currentImage, NULL, NULL, &textureWidth, &textureHeight);
    //currentImage = IMG_LoadTexture(nullptr,"image.png" );
    SDL_SetRenderDrawColor(renderTarget, 0xFF, 0, 0, 0xFF);


    frameWidth = textureWidth / 3;
    frameHeight = textureHeight / 4;

    playerRect.x = playerRect.y = 0;
    playerRect.y = frameWidth;
    playerRect.h = frameHeight;

    //SDL_SetRenderDrawColor(renderTarget, 0xFF, 0, 0, 0xFF);

    bool isRunning = true;
    SDL_Event ev;

    while (isRunning)
    {
        while (SDL_PollEvent(&ev) != 0)
        {

            if (ev.type == SDL_QUIT)
                isRunning = false;
        }


    frameTime++;

    if (FPS / frameTime == 4)
    {

        frameTime = 0;
        playerRect.x += frameWidth;
        if (playerRect.x >= textureWidth)
            playerRect.x =0;

        }
        SDL_RenderClear(renderTarget);
        SDL_RenderCopy(renderTarget, currentImage, &playerRect, NULL);
        SDL_RenderPresent(renderTarget);

    }
    SDL_DestroyWindow(window);
    SDL_DestroyTexture(currentImage);
    SDL_DestroyRenderer(renderTarget);
    window = nullptr;

    renderTarget = nullptr;
    currentImage  = nullptr;

    SDL_Quit();


    return 0;
}

Aucun commentaire:

Enregistrer un commentaire