When loading a PNG image on my SDL program I used the SDL_CreateTextureFromSurface() function, however it returns a NULL texture and the error returned is "Invalid renderer".
The renderer was created successfully, I did test what it could be putting an SDL_GetError() after the CreateRenderer and it returned the error "That operation is not supported".
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
int main() {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {...} //Print error and return 1.
SDL_Window * window = SDL_CreateWindow("test", 0, 0, 100, 100, 0);
if (window == NULL) {...} //Print error and return 1.
SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0);
if (renderer == NULL) {...} //Print error and return 1.
printf("%s\n", SDL_GetError); //Returns "That operation is not supported".
int imageFlags = IMG_INIT_PNG;
if (!(IMG_Init(imageFlags) & imageFlags)) {...} //Print error and return 1.
SDL_Texture * texture = NULL;
SDL_Surface * surface = IMG_Load("Test.png"); //The file does exist on the folder.
if (surface == NULL) {...} //Print error and return 1.
texture = SDL_CreateTextureFromSurface(renderer, surface);
if (texture == NULL) {
printf("%s\n", SDL_GetError()); //Returns "Invalid Renderer".
return 1;
}
SDL_FreeSurface(surface);
SDL_Delay(100);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
IMG_Quit();
SDL_Quit();
return 0;
}