Хорошо, из того, что я исследовал, кажется, что ошибка Invalid Renderer применяется к различным случаям, и я теряюсь от того, почему мой код ее создает. я сузил его до определенной области кодаОшибка SDL: недопустимый рендеринг на SDL_CreateTextureFromSurface
//If existing texture is there, free's and sets to NULL. Along with iWidth & iHeight = 0;
freetexture();
//final image texture
SDL_Texture* niTexture = NULL;
//Loads image at specified path
SDL_Surface* loadedSurface = IMG_Load(path.c_str());
if (loadedSurface == NULL)
{
printf("Unable to load image %s! SDL_image Error: %s\n", path.c_str(), IMG_GetError());
}
else
{
printf("SpriteSheet :: Loaded\n");
Init mkey;
//Color key DOUBLE CHECK IF ERROR CHANGE TO ORIGINAL 0, 0xFF, 0xFF
SDL_SetColorKey(loadedSurface, SDL_TRUE, SDL_MapRGB(loadedSurface->format, 50, 96, 166));
//create texture from surface pixels
niTexture = SDL_CreateTextureFromSurface(mkey.Renderer, loadedSurface);
if (niTexture == NULL)
{
printf("Unable to create texture from %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
}
В частности на линии,
niTexture = SDL_CreateTextureFromSurface(mkey.Renderer, loadedSurface);
вызывает SDL возвращать Invalid ошибки рендерера. В моем классе инициализации рендеринг отлично инициализируется, только когда я пытаюсь использовать его для загрузки изображения, я получаю ошибку Invalid Renderer. Любая помощь по устранению этой ошибки приветствуется.
Edit :: Вот некоторый код из Init класса, относящийся к визуализатору,
printf("Linear Texture Filtering :: Enabled\n");
//Create Window
Window = SDL_CreateWindow("Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, sw, sh, SDL_WINDOW_SHOWN);
if (Window == NULL)
{
printf("Window failed to be created\n");
SDLSuccess = false;
}
else
{
printf("Window :: Created\n");
//Create VYNC'd renderer for the window
Renderer = SDL_CreateRenderer(Window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (Renderer == NULL)
{
printf("Renderer failed to be created\n");
SDLSuccess = false;
}
Надеется, что это помогает найти проблему.
Можете ли вы показать код из класса Init? –
Добавлен код Init для уточнения. – Failbound