2014-04-06 34 views
0

我有這個惱人的問題,當我在其中一個類中創建SDL_renderer時,它變成了nullptr,但在另一個類中創建另一個類時,它通常會正常工作。SDL_renderer在創建時變爲空

在我的引擎類創建渲染器,運行正常:

m_window = SDL_CreateWindow("Breakout", 
    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 
    m_window_width, m_window_height, 
    SDL_WINDOW_OPENGL); 

m_renderer = SDL_CreateRenderer(m_window, -1, 
    SDL_RENDERER_ACCELERATED); 

創建我DrawManager一流的渲染,渲染成爲一個nullptr:

bool DrawManager::Initialize(SDL_Window *window, int width, int height) { 
    m_renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); 

    if(m_renderer == nullptr) { 
     return false; 
    }; 

    return true; 

}; 

的m_renderer變量在每類中創建相應的頭文件。

在Engine類中創建的窗口被髮送到DrawManager的Initialize方法中,並且該窗口不是nullptr,只有呈現器是。兩個類都有相同的SDL相關包含。

任何人有任何想法有什麼問題的代碼?

回答

0

想使用OpenGL進行繪製嗎?

如果是這樣,則不需要渲染器。否則,如果要使用簡單的SDL繪圖函數,請嘗試從SDL_CreateWindow()中刪除SDL_WINDOW_OPENGL標誌。

+0

感謝您的意見。我最終發送了原始渲染器,因爲我對SDL並不熟悉,而且時間緊。 –

0

你打兩次電話SDL_CreateRenderer?如果是這樣,請嘗試只調用一次並傳遞指針。

相關問題