2014-02-15 134 views
1

我是遊戲開發,SDL和C++的新手。我一直在學習與這裏的代碼:SDL2多個渲染器?

http://gamedevgeek.com/tutorials/managing-game-states-in-c/

相關位:

多個國家不是在演示唯一重要的,而且在一般的遊戲。每場比賽都以引進狀態開始,然後進入某種菜單,最後一場比賽開始。當你最終被擊敗時,遊戲會轉到遊戲結束狀態,通常會返回到菜單。在大多數遊戲中,一次可以處於多個狀態。例如,您通常可以在遊戲過程中調出菜單。

我的問題是:要一次顯示多個狀態,比如在遊戲上顯示菜單,每個狀態都必須有自己的Renderer嗎?

+2

絕對不是。你可以使用一個渲染器來處理所有事情,你只需要讓draw函數爲實際遊戲和菜單處理代碼。 – BWG

+2

我認爲你需要每個窗口一個渲染器。 – olevegard

回答

1

您將Image.png *(或其他格式)傳遞到紋理上,然後將紋理放置在「表面」(您可以用此剪輯紋理),然後將其傳遞到渲染器。所以,你所要做的就是改變剪輯和紋理,並把它傳遞給渲染器!在右邊的命令中!

例:你會先渲染背景,然後精靈,然後影響,等等

我希望這有助於。

下面的代碼是從懶惰網站!檢查它非常有用TO BEGIN SDL2

http://lazyfoo.net/tutorials/SDL/07_texture_loading_and_rendering/index.php

//While application is running 
     while(!quit) 
     { 
      //Handle events on queue 
      while(SDL_PollEvent(&e) != 0) 
      { 
       //User requests quit 
       if(e.type == SDL_QUIT) 
       { 
        quit = true; 
       } 
      } 

      //Clear the last frame 
      SDL_RenderClear(gRenderer); 

      //Render texture to screen 
      SDL_RenderCopy(gRenderer, gTexture1, NULL, NULL); 
      SDL_RenderCopy(gRenderer, gTexture2, NULL, NULL); 
      SDL_RenderCopy(gRenderer, gTexture3, NULL, NULL); 
      SDL_RenderCopy(gRenderer, gTexture4, NULL, NULL); 

      //Update screen 
      SDL_RenderPresent(gRenderer);} 

,你可以在上面的代碼中看到SDL_RenderCopy使用呈現不同的紋理相同的渲染器。所以你需要的是很多紋理。

我確定可能有多個渲染器的用法,但我不知道爲什麼要這樣做?

// 第二天 // 所以我檢查了這一點,並已經看到,如果有一個多窗口應用程序,你可以使用多個渲染器。

+0

你介意在代碼中展示一個例子嗎?更具體的例子總是很好。 –

+0

這個代碼很長,涉及多個類。但我會去偷一些LazyFoo並粘貼... brb – HgMerk