SDL_FillRect не рисует?

Я делаю игру на C ++ с SDL и хочу рендерить частицы с помощью SDL_FillRect ().
Я часами играл с кодом, но что бы я ни делал, частицы не рисуют.
Это код в моей функции Render (я убедился, что я действительно вызывал функцию):

void Particle::Render()
{
SDL_Rect rect;
rect.x = x;
rect.y = y;
//rect.w = Particle::Particle_Size;
//rect.h = Particle::Particle_Size;
rect.w = 8;
rect.h = 8;
surface = SDL_CreateRGBSurface(SDL_SWSURFACE,8,8,32,0,0,0,0);
if(SDL_FillRect(surface,&rect,SDL_MapRGB(surface->format,0,0,0)) != 0) printf("Error");
//SDL_RenderCopy(renderer,texture,NULL,&rect);
}

Консоль не печатает «Ошибка», поэтому SDL_FillRect () выполнен успешно. Тем не менее, никакие правки не рисуются на экране.
Я попытался создать текстуру с помощью SDL_CreateTextureFromSurface () с этой переданной поверхностью, а затем использовал SDL_RenderCopy, который закомментирован в вышеупомянутой функции, но он работал до того, как я закомментировал ее. Я хочу использовать SDL_FillRect, чтобы я мог иметь цветные текстуры, хотя.

Я что-то пропустил?

0

Решение

SDL_CreateRGBSurface() Функция создает вне экрана поверхность. Если вы хотите нарисовать на экране, вам придется рисовать на поверхности, возвращенной SDL_GetWindowSurface(),

То есть, если вы используете SDL 2.0.

1

Другие решения

Я думаю, что вы могли бы использовать эту функцию, чтобы сделать то, что вы ищете:

   SDL_RenderFillRect()

https://wiki.libsdl.org/SDL_RenderFillRect

Вы должны установить цвет рендера раньше:

   SDL_SetRenderDrawColor();

Я думаю, что вы также можете обновить поверхность окна, чтобы получить то, что вы должны работать.
Что бы использовать

   SDL_UpdateWindowSurface().

https://wiki.libsdl.org/SDL_UpdateWindowSurface?highlight=%28%5CbCategoryVideo%5Cb%29%7C%28CategoryEnum%29%7C%28CategoryStruct%29

Надеюсь, поможет!

1

По вопросам рекламы [email protected]