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

pouk_

Frischling

  • »pouk_« ist der Autor dieses Themas

Beiträge: 64

Beruf: Schüler

  • Private Nachricht senden

1

04.04.2015, 14:29

SDL - SDL_Window und SDL_Renderer Pointer

Ahoy, ich hab jetzt auch wieder versucht mit SDL anzufangen und hab das folgende Problem :
Ich habe versucht die einzelnen Subsysteme von SDL zu initialisieren in eine init() Funktion auszulagern. In der init() Funktion wird auch noch ein Window und dazu ein Renderer erstellt. Jedoch sind in der main() Funktion beide Pointer NULL. Das Ganze ist in C geschrieben.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>


int init( SDL_Window* win, SDL_Renderer* ren ) {
    
    // init subsystems
    if( SDL_Init( SDL_INIT_VIDEO) ) {
        fprintf( stderr, "SDLInit failed\n" );
        return 1;
    }
    // image subsystem
    if( !( IMG_Init( IMG_INIT_PNG ) & IMG_INIT_PNG ) ) {
        fprintf( stderr, "IMGInit failed\n" );
        return 1;
    }
    // ttf subsystem
    if( TTF_Init() == -1 ) {
        fprintf( stderr, "TFTInit failed\n" );
        return 1;
    }
    
    
    // create window
    win = SDL_CreateWindow("DOOR TO DEATH", 1, 1, 640, 480, SDL_WINDOW_SHOWN );
    if( win == NULL ) {
        fprintf( stderr, "Making a window failed\n" );
        return 1;
    }
    
    // create renderer
    ren = SDL_CreateRenderer( win, -1, SDL_RENDERER_ACCELERATED );
    if( ren == NULL ) {
        fprintf( stderr, "Renderer making failed\n" );
        return 1;
    }
    SDL_SetRenderDrawColor( ren, 255, 255, 255, 255 );
    SDL_RenderClear( ren );
    SDL_RenderPresent( ren );
    return 0;
}


int main() {
    
    SDL_Renderer* ren = NULL;
    SDL_Window* win = NULL;
    SDL_Event e;
    
    if( init( win, ren ) ) return 1;
    
    if( win == NULL ) {
        fprintf( stderr, "win is NULL\n" );
    }
    
    if( ren == NULL ) {
        fprintf( stderr, "ren is NULL\n" );
        return 1;
    }
    
    while(1) {
        SDL_PollEvent( &e );
        if( e.type == SDL_QUIT ) return 0;
    }
    
    SDL_Quit();
    return 0;
}

Ausgabe:
win is NULL
ren is NULL

Es hat in vorherigen Programmen auf diese Weise immer geklappt ;( .

C-/C++-Quelltext

1
2
#include <stdlib.h>
main(){for(;;malloc(1024));} // dead

pouk_

Frischling

  • »pouk_« ist der Autor dieses Themas

Beiträge: 64

Beruf: Schüler

  • Private Nachricht senden

2

04.04.2015, 14:36

Wollte nur sagen : Habe schon im Forum gesucht, und es wurde gesagt, dass ich es mit Zeigern auf Zeiger versuchen sollte. Hat aber auch nicht geklappt.

C-/C++-Quelltext

1
2
#include <stdlib.h>
main(){for(;;malloc(1024));} // dead

3

04.04.2015, 14:39

Debug das ganze mal und schau dir mal die Addressen der Pointer an!

Vielleicht kommst dann drauf was falsch läuft.

Das selbe Problem hatte übrigens vor kurzen schon jemand im Forum.

Edit:
Wollte nur sagen : Habe schon im Forum gesucht, und es wurde gesagt, dass ich es mit Zeigern auf Zeiger versuchen sollte. Hat aber auch nicht geklappt.


Wie sieht denn dann dein Code aus?
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

pouk_

Frischling

  • »pouk_« ist der Autor dieses Themas

Beiträge: 64

Beruf: Schüler

  • Private Nachricht senden

4

04.04.2015, 14:41

Ja habe schon diesen Post gelesen, hab es auch befolgt. Hab aber ein * vergessen und der Compiler hat keinen Fehler ausgespuckt ;L. Naja das Problem hat sich jetzt gelöst. :wacko:

C-/C++-Quelltext

1
2
#include <stdlib.h>
main(){for(;;malloc(1024));} // dead

Werbeanzeige