Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Rinma

Frischling

  • »Rinma« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Neuhäusel

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

1

11.09.2013, 11:20

SDL2_image PNG File unter Ubuntu

Hallo,
ich habe ein Problem mit dem einbinden einer PNG Datei unter Ubuntu13.04 mit SDL2_image.
Ich habe SDL2 und SDL2_image installiert und in meinem C++ Projekt eingefügt.
Ich benutze zum entwickeln Eclipse Kepler. BMP Dateien werden ohne Probleme geladen nur bei anderen Bild Formaten funktioniert es nicht.
Die aktuellste version der libpng und zlib sind installiert.

C-/C++-Quelltext

1
2
3
4
5
6
SDL_Texture* typ_image = NULL;
    typ_image = IMG_LoadTexture(renderer, "data/typ.png");

    if (bob_image == NULL) {
        std::cout << "Fehler beim Laden von Typ Image" << std::endl;
    }


Nach langem suchen bei Google und mehereren anderen Foren weiß ich jetzt nicht mehr weiter.
Bin dankbar für jede art von Hilfe.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

11.09.2013, 11:41

Prüf die Fehler Message mal mit SDL_GetError. Wahrscheinlich werden andere Formate nicht unterstützt.
Sonst solltest du auch mal einen Blick auf IMG_Init werfen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Rinma

Frischling

  • »Rinma« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Neuhäusel

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

3

11.09.2013, 11:54

Du hast recht. Bei SDL_GetError() kommt die Meldung: Unsupported image format.
IMG_Init(IMG_INIT_PNG); hat leider nichts bewirkt. Aber laut SDL2_image sollte PNG unterstüzung da sein.
Vielleicht sonst noch eine Idee ?

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

11.09.2013, 12:02

Das hier mal probiert? http://jcatki.no-ip.org:8080/SDL_image/SDL_image.html#SEC11
Ich kenne deine IMG_LoadTexture ja nicht.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

11.09.2013, 12:36

Benutzt dein Bild vielleicht irgendein "exotisches" Feature des PNG-Formats?

Rinma

Frischling

  • »Rinma« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Neuhäusel

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

6

11.09.2013, 12:37

Das ist der komplette Aufruf was mit der PNG passieren soll.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    SDL_Texture* typ_image = NULL;
    typ_image = IMG_LoadTexture(renderer, "data/typ.png");

    if (typ_image == NULL) {
        std::cout << SDL_GetError() << std::endl;
        std::cout << "Fehler beim Laden von BoB Image" << std::endl;
    }

    SDL_Rect typ_rect;
    typ_rect.x = 100;
    typ_rect.y = 100;
    typ_rect.w = 100;
    typ_rect.h = 180;

    SDL_Event* mainEvent = new SDL_Event();

    while (!quit && mainEvent->type != SDL_QUIT) {
        SDL_PollEvent(mainEvent);

        SDL_RenderCopy(renderer, typ_image, NULL, &typ_rect);

        SDL_RenderPresent(renderer);
    }


Und im Dateianhang ist die zu ladente PNG Datei.
Das PNG Bild habe ich einfach Paint schnell gezeichnet und als PNG exportiert.

Das mit dem IMG_Load() hab ich schon versucht aber das geht nur auf Variablen vom Typ SDL_Surface und nicht auf SDL_Texture Variablen die ich hierfür benötige.
»Rinma« hat folgendes Bild angehängt:
  • typ.png

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rinma« (11.09.2013, 12:52)


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

11.09.2013, 13:01

Du kannst auch eine SDL_Texture aus einer SDL_Surface machen: http://wiki.libsdl.org/SDL_CreateTextureFromSurface
Wird das Bild denn mit IMG_Load als korrekte SDL_Surface geladen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Rinma

Frischling

  • »Rinma« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Neuhäusel

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

8

11.09.2013, 13:07

Nein, die PNG wird nicht richtig geladen.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

9

11.09.2013, 13:21

Hab es gerade getestet, bei mir wird es korrekt geladen.
Du hast die neuste SDL2 / SDL2_image Version und damit auch die neusten .dlls?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Rinma

Frischling

  • »Rinma« ist der Autor dieses Themas

Beiträge: 5

Wohnort: Neuhäusel

Beruf: Fachinformatiker - Anwendungsentwicklung

  • Private Nachricht senden

10

11.09.2013, 13:34

Die neusten versionen ja. Dll nein. Bin auf Linux unterwegs, daher kommt auch wahrscheinlich mein problem.

Werbeanzeige