创建时,SDL_renderer变为null

时间:2014-04-06 15:04:26

标签: c++ null sdl sdl-2 renderer

我有这个恼人的问题,当我在我的一个类中创建一个SDL_renderer时,它变成了一个nullptr但是当在另一个类中创建另一个时它正常运行。

在我的Engine类中创建渲染器,正常运行:

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相关包含。

任何人都有任何想法代码有什么问题吗?

2 个答案:

答案 0 :(得分:0)

你想用OpenGL绘制?

如果是这样,您不需要渲染器。否则,如果您想使用简单的SDL绘制函数,请尝试从SDL_WINDOW_OPENGL中删除SDL_CreateWindow()标记。

答案 1 :(得分:0)

您是否两次致电SDL_CreateRenderer?如果是这样,请尝试只调用一次并传递指针。