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

ugoessner

Frischling

  • »ugoessner« ist der Autor dieses Themas

Beiträge: 52

Wohnort: Wedemark OT-Mellendorf

Beruf: Systeminformatiker

  • Private Nachricht senden

1

08.04.2009, 11:00

[SDL] JPG-Bild auf den Monitor

Ich habe jetzt mal angefangen, mit SDL ein Bild auf dem Monitor ausgeben zu lassen.
Der Monitor bleibt trotzdem schwarz.

Hier mein Quelltext:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <stdlib.h>

#include <sdl.h>
#include <sdl_image.h>

using namespace std;

int main(int argc, char *argv[])
{
    SDL_Surface *image, *screen;
    SDL_Rect rect;
    
    rect.x=0;
    rect.y=0;
    rect.w=313;
    rect.h=379;

    if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)==-1)
    {
        cout << "SDL konnte nicht gestartet werden.\n";
        exit(1);
    }

    screen=SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_FULLSCREEN | SDL_DOUBLEBUF);

    if(screen==NULL) exit(1);

    image=IMG_Load("wappenmellendorf.jpg");

    if(image==NULL)
    {
        cout << "Bild konnte nicht geladen werden.\n";
        exit(1);
    }

    SDL_BlitSurface(image, &rect, screen, &rect);
    SDL_Flip(screen);
    SDL_Delay(5000);

    atexit(SDL_Quit);
}

Dieses sollte dann noch ein kleines Spiel werden
#define __miniMAL 0x00

Anonymous

unregistriert

2

08.04.2009, 12:39

Zitat

Der Monitor bleibt trotzdem schwarz.

Steck's Netzkabel dran (;

Ich kenne mich mit der SDL so gut wie nicht aus, aber sicher, dass die sdl_image, Jpeg unterstützt? Hatte mich sowieso etwas gewundert, da mit deiner Methode normalerweise Bitmapdateien geladen werden. Mach mal ne Bitmap draus, dann weisste ob es jpeg unterstützt.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

3

08.04.2009, 12:45

sdl an sich afaik nicht. warum jpg? nimm lieber png ist verlustfrei und schaumal hier: https://www.spieleprogrammierer.de/phpBB…opic.php?t=8651

physX

Treue Seele

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

4

08.04.2009, 13:35

Re: [SDL] JPG-Bild auf den Monitor

Hier mein Quelltext:

C-/C++-Quelltext

1
2
3
4
5
6
7
#
    SDL_BlitSurface(image, &rect, screen, &rect);
    SDL_Flip(screen);
    SDL_Delay(5000);

    atexit(SDL_Quit);
}

Dieses sollte dann noch ein kleines Spiel werden[/quote]

Ich denke du musst nach dem Blit noch ein SDL_UpdateRect(...) einfügen, damit die Oberflaeche wirklich aktualisiert wird. Genaue info dazu findest du unter http://www.libsdl.org/cgi/docwiki.cgi/SDL_UpdateRect.
hoffe das hilft.

Hier noch ein link genau zu dem Thema bzgl. SDL (sollte mit .jpg analog funktionieren) http://de.wikibooks.org/wiki/SDL:_Bilder…ner_Datei_laden

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

5

09.04.2009, 18:13

sdl_image kann jpeg laden.
und auch png und so manches anderes.

Der screen sollte eigentlich durch das SDL_Flip(screen) ; aktualisiert werden,
aber versuch es doch mal mit SDL_UpdateRect.


Bist Du sicher das dass Bild (mind.) so gross ist wie den Bereich den du davon bitten willst (rect)?

image->w und image->h geben Dir die grösse.
Wenn du eh ein ganzes Surface an den oberen linken Rand des Zielsurfaces bitten möchtest kannst du den Aufruf auch so machen:

C-/C++-Quelltext

1
SDL_Blit(image, NULL, screen, NULL);


Im Ordner wo die Programmdatei (.exe) ist, gibt es keine (Text-)Dateien stdout oder stderr? Falls doch, mal die mit einem Texteditor ansehen..

Werbeanzeige