Некоторое время я изучал 2D-программирование на SDL, и теперь мне захотелось создать программу, используя комбинацию SDL и OpenGL. Я настроил это так:
Код: Выделить всё
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("SDL and OpenGL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
context = SDL_GL_CreateContext(window);
Программа на данный момент представляет собой просто черное окно с белой линией, отображаемой с использованием OpenGL. Вот код рендеринга:
Код: Выделить всё
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2d(1, 0);
glVertex2d(-1, 0);
glEnd();
SDL_GL_SwapWindow(window);
Дело в том, что я хотел бы дополнительно визуализировать текстуры, используя чистый SDL и объект SDL_Renderer, как я делал раньше без OpenGL. Я попробовал это, но это не сработало. Возможно ли это вообще сделать и как? Я создал SDL_Renderer, а затем после рисования OpenGL сделал следующее:
Код: Выделить всё
SDL_Rect fillRect;
fillRect.w = 50;
fillRect.h = 50;
fillRect.x = 0;
fillRect.y = 0;
SDL_SetRenderDrawColor(renderer, 100, 200, 100, 0);
SDL_RenderFillRect(renderer, &fillRect);
SDL_RenderPresent(renderer);
Но это не работает. Прямоугольник не отображается, хотя на несколько миллисекунд он слегка появляется. У меня такое ощущение, что рендеринг OpenGL перезаписывает его.
Подробнее здесь:
https://stackoverflow.com/questions/283 ... -glcontext