2016-06-10 16 views
0

Ich möchte meine Spielkomponenten wie ein HTML-Spiel ausrichten.C++ SDL - Render in einem bestimmten Bereich

Meine SDL_Window wird eine SDL_Renderer Rendering aller seiner Komponenten haben. Diese Komponenten sind einige Schaltflächen, Bilder und ein Rechteckbereich wie ein HTML-Canvas.

Ich möchte mein Spiel innerhalb dieser Leinwand gerendert werden, weil ich eine "Welt" und eine "Kamera" implementieren werde, die nur diese "Leinwand" beeinflussen, während die GUI um die "Leinwand" gerendert wird unabhängig von der Kamera.

Wie kann ein Renderer einen bestimmten Bereich innerhalb eines Fensters rendern?

Ich kann dies nicht mit Mathematik tun, weil ich jede Textur innerhalb der Leinwand, aber zu weit von der Perspektive gerendert werden soll, versteckt werden.

Teil des Codes:

SDL_Window* gWindow = SDL_CreateWindow("Title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN); 
    SDL_Renderer* gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED); 

    while (true) { 
     SDL_RenderClear(gRenderer); 
     render_gui(); // i can do this part 
     render_game_inside_canvas(); // ? 
     SDL_RenderPresent(gRenderer); 
    } 
+0

[Was haben Sie versucht?] (Http://mattgemamm.com/what-have-you-tried/) Bitte zeigen Sie zumindest ein Minimum Bemühung, dieses Problem zu lösen. – Drop

Antwort

0

Sie können es mit glViewport() wie folgt aufrufen:

Point2d pos = get_pos(); 
Vector2d sz = get_size(); 
glViewport(pos.x, screen_height-pos.y-sz.dy, sz.dx, sz.dy); 
obj.render(); 
glViewport(0,0,screen_width, screen_height); 

Es irgendwie erfordert, dass Sie wissen, was die Dimensionen Ihres gesamten Bildschirms ist. .. (die ungerade Berechnung ist erforderlich, weil glViewport den Bildschirm auf dem Kopf hält :-)

Verwandte Themen