2013-06-12 65 views
0

我正在使用SDL 2.0編寫OpenGl遊戲。現在我有一個問題。我將在屏幕上繪製圖像。現在我創建窗口並初始化所有內容。圖像加載沒有錯誤,但不顯示在屏幕上。以下是一些代碼示例。所有這些代碼都是繪製位圖所需的。沒有其他代碼顯示。我用這個代碼得到一個黑色的窗口。而沒有圖像:((更新代碼,主要和功能)圖像未顯示在SDL 2.0中

void Bitmap(const tstring& nameRef, int xPos, int yPos, int width, int height) 
{ 
SDL_Surface* image; 
    SDL_Rect rect; 
    rect.x = xPos; 
    rect.y = yPos; 
    rect.h = height; 
    rect.w = width; 

    image = SDL_LoadBMP(("./GameData/Bitmap/" + m_FileName).c_str()); 

    SDL_BlitSurface(image , NULL , SDL_GetWindowSurface(GAME_ENGINE->GetMainWindow()) , &rect); 

} 


int main(int argc, char** argv) 
{ 
SDL_Window * m_MainWindowPtr =nullpr; 

//Initialize SDL 
    if(SDL_Init(SDL_INIT_EVERYTHING) < 0) 
    { 
     return false; 
    } 

    //Create Window 
    if(m_Fullscreen == false) 
    { 
     m_MainWindowPtr = SDL_CreateWindow(m_WindowName.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, m_ScreenWidth, m_ScreenHeight, SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); 
    } 
    else if(m_Fullscreen == true) 
    { 
     m_MainWindowPtr = SDL_CreateWindow(m_WindowName.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, m_ScreenWidth, m_ScreenHeight, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_RESIZABLE | SDL_WINDOW_OPENGL); 
    } 

    //check if the window is made, else quit the game 
    if(m_MainWindowPtr == nullptr) 
    { 
     return false; 
    } 

    //Enable unicode 
    //SDL_EnableUNICODE(SDL_TRUE); 

    // NEEDED TO DRAW OPENGL 
    SDL_GLContext glcontext = SDL_GL_CreateContext(m_MainWindowPtr); 

    //LIKE THE OLD SWAP BUUFERS FUNCTION 
    SDL_GL_SwapWindow(m_MainWindowPtr); 


Bitmap("test.bmp", 500, 500, 247, 360); 
} 
+0

你如何知道圖像加載正確? – 2013-06-12 14:55:15

+0

如果圖像未正確加載,SDL_LoadBMP將返回一個空指針。而SDL_LoadBMP不返回任何NULL指針。 – JimmyD

+2

然後問題在其他地方沒有顯示。發佈一個簡短的,自包含的,正確的例子,而不是部分代碼,會更好。 – 2013-06-12 15:03:00

回答

1

SDL_UpdateRect?

你有沒有正確設置OPEN_GL? 視?

如果你要使用OpenGL的渲染,我沒有看到任何的OpenGL代碼。

這裏嘗試的例子,告訴我們它是怎麼去?

http://wiki.libsdl.org/moin.fcg/SDL_GL_CreateContext

+0

對不起,但SDL 2.0中不存在SDL_UpdateRect。我將嘗試實現OpenGl的東西。 – JimmyD