我有这个恼人的问题,当我在我的一个类中创建一个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相关包含。
任何人都有任何想法代码有什么问题吗?
答案 0 :(得分:0)
你想用OpenGL绘制?
如果是这样,您不需要渲染器。否则,如果您想使用简单的SDL绘制函数,请尝试从SDL_WINDOW_OPENGL
中删除SDL_CreateWindow()
标记。
答案 1 :(得分:0)
您是否两次致电SDL_CreateRenderer
?如果是这样,请尝试只调用一次并传递指针。