SDL-GPU Рендеринг в текстуру приводит к неровным краямC++

Программы на C++. Форум разработчиков
Anonymous
SDL-GPU Рендеринг в текстуру приводит к неровным краям

Сообщение Anonymous »

У меня есть текстура, и я визуализирую для нее круг с помощью SDL-GPU, а затем визуализирую эту текстуру в окне:

Код: Выделить всё

#include "SDL2/SDL.h"
#include "SDL2/SDL_gpu.h"

int main() {
if (SDL_Init(SDL_INIT_VIDEO) != 0)
return 1;

GPU_Target* window = GPU_Init(800, 600, GPU_DEFAULT_INIT_FLAGS);

GPU_Image* texture = GPU_CreateImage(800, 600, GPU_FORMAT_RGBA);
GPU_SetImageFilter(texture, GPU_FILTER_LINEAR);

GPU_Target* texture_target = GPU_LoadTarget(texture);

GPU_Clear(texture_target);
GPU_CircleFilled(texture_target, 200, 300, 100, { 255, 0, 0, 255 });
GPU_Flip(texture_target);

bool running = true;

SDL_Event event;
while (running) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
running = false;
}
}

GPU_Clear(window);

GPU_Blit(texture, nullptr, window, 400, 300);;
GPU_CircleFilled(window, 600, 300, 100, { 255, 0, 0, 255 });

GPU_Flip(window);
}

GPU_FreeImage(texture);
GPU_Quit();
SDL_Quit();

return 0;
}
Однако визуализированная текстура выглядит грубой, особенно по краям круга (слева), по сравнению с кругом, отображаемым непосредственно в окне (справа):
Изображение

Разница небольшая, но заметная.< /p>
Что может быть причиной этой проблемы?
Вот что я пробовал:
Фильтрация текстур установлено значение GPU_FILTER_LINEAR, поэтому я не думаю, что это проблема.
Я попробовал включить множественную выборку с помощью следующего кода (перед инициализацией SDL):

Код: Выделить всё

glEnable(GL_MULTISAMPLE);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4);
Но, похоже, это не имеет никакого эффекта.


Подробнее здесь: https://stackoverflow.com/questions/786 ... ough-edges

Вернуться в «C++»