Hallo Leute.
Ich beschäftige mich seit kurzem mit SDL2 und möchte ein Bitmap rendern.
Ich bekomme jedoch von SDL_CreateTextureFromSurface "invalid texture" als Fehler und
es wird nur das Fenster mit meiner Renderfarbe dargestellt.
Wäre nett wenn mir jemand einen Tipp geben könnte.
Ich verwende Visual C++ 2013.
Danke im Vorraus,
hofi64
Ich beschäftige mich seit kurzem mit SDL2 und möchte ein Bitmap rendern.
Ich bekomme jedoch von SDL_CreateTextureFromSurface "invalid texture" als Fehler und
es wird nur das Fenster mit meiner Renderfarbe dargestellt.
Wäre nett wenn mir jemand einen Tipp geben könnte.
Ich verwende Visual C++ 2013.
Danke im Vorraus,
hofi64
Code:
#include "SDL.h"
#include <stdio.h>
SDL_Event events;
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char *args[])
{
//Variablen
SDL_Window *wind = NULL;
SDL_Surface *img = NULL;
SDL_Texture *backg = NULL;
SDL_Renderer *ren1 = NULL;
bool inrun = true;
//SDL Initialisieren
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("Error: %s\n", SDL_GetError());
}
//Fenster erstellen
wind = SDL_CreateWindow("Another Game", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if (wind == NULL)
{
printf("Fenster konnte nicht erstellt werden, %s\n", SDL_GetError());
}
//Bild in Surface laden
img = SDL_LoadBMP("back.bmp");
if (img == NULL)
{
printf("back.bmp konnte nicht geladen werden, %s\n", SDL_GetError());
}
//Hier muss der Fehler liegen (invalid texture)
backg = SDL_CreateTextureFromSurface(ren1, img);
if (backg == NULL)
{
printf("Textur konnte nicht erstellt werden, %s\n", SDL_GetError());
}
SDL_FreeSurface(img);
//Linearer Filter
if (!SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "1"))
{
printf("SDL_HINT_RENDER_SCALE_QUALITY wird nicht unterstützt!, %s", SDL_GetError());
}
//Render und Renderfarbe erstellen
ren1 = SDL_CreateRenderer(wind, -1, SDL_RENDERER_ACCELERATED);
if (ren1 == NULL)
{
printf("Renderer konnte nicht erstellt werden, %s\n", SDL_GetError());
}
SDL_SetRenderDrawColor(ren1, 0xFF, 0xFF, 0xFF, 0xFF);
while (inrun != false)
{
while (SDL_PollEvent(&events) != 0)
{
//Events abfragen
if (events.type == SDL_QUIT)
{
inrun = false;
}
if (events.key.keysym.sym == SDLK_ESCAPE)
{
inrun = false;
}
}
//Rendern
SDL_RenderClear(ren1);
SDL_RenderCopy(ren1, backg, NULL, NULL);
SDL_RenderPresent(ren1);
}
//Schließen
SDL_DestroyWindow(wind);
SDL_DestroyRenderer(ren1);
SDL_DestroyTexture(backg);
SDL_Quit();
return 0;
}