问题描述
我正在尝试建立一个SDL项目,但是我从以下错误消息中得到了答案:
Renderer already associated with window
来自以下功能:
void Game::render()
{
renderer = SDL_CreateRenderer(window,-1,0);
if (renderer == NULL)
std::cout << "Failed to create a renderer" << '\n' << "Error: " << SDL_GetError() << std::endl;
}
我只制作了一个窗口和一个渲染器,它们是分开的,所以我不知道为什么会发生这种情况。我在SO上发现了另一个错误,但同样的错误,但是显然他遇到了问题,因为正在调用SDL_GetwindowSurface()
,但是我没有调用该函数。以下是我的代码。感谢您的帮助。
game.h:
#pragma once
#include <iostream>
#include "SDL.h"
class Game
{
public:
bool init();
bool constructwindow
(
const char* windowName,unsigned int xWindowPos,unsigned int yWindowPos,unsigned int windowWidth,unsigned int windowHeight,bool fullScreen = false
);
void render();
void update();
SDL_Window* getwindow();
bool handleEvents();
protected:
private:
SDL_Window* window = nullptr;
SDL_Renderer* renderer = nullptr;
SDL_Event event;
bool quit = false;
};
game.cpp:
#include "game.h"
bool Game::init()
{
if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
return true;
else
std::cout << "Could not initialise SDL" << '\n' << "Error: " << SDL_GetError() << std::endl;
}
bool Game::constructwindow(const char* windowName,uint16_t xWindowPos,uint16_t yWindowPos,uint16_t windowWidth,uint16_t windowHeight,bool fullScreen)
{
window = SDL_CreateWindow(windowName,xWindowPos,yWindowPos,windowWidth,windowHeight,fullScreen);
if (!window)
std::cout << "Could not create window" << '\n' << "Error: " << SDL_GetError() << std::endl;
return window;
}
void Game::render()
{
renderer = SDL_CreateRenderer(window,0);
if (!renderer)
std::cout << "Failed to create a renderer" << '\n' << "Error: " << SDL_GetError() << std::endl;
}
void Game::update()
{
SDL_RenderPresent(renderer);
}
SDL_Window* Game::getwindow()
{
return window;
}
bool Game::handleEvents()
{
while (SDL_PollEvent(&event))
if (event.type == SDL_QUIT)
quit = true;
return quit;
}
main.cpp
#include "game.h"
int main(int argc,char* argv[])
{
Game app;
if (app.init())
if (app.constructwindow("3D Engine",SDL_WINDOWPOS_CENTERED,1200,600))
while (!app.handleEvents())
{
app.render();
app.update();
}
SDL_DestroyWindow(app.getwindow());
SDL_Quit();
return EXIT_SUCCESS;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)