2015-03-25 3 views
1

Я делал 2D-игры с SDL2 некоторое время, и я решил в последнее время заниматься 3D-играми, используя opengl 3.3.Как сделать opengl 3.3 в текстуру SDL2?

Поскольку у меня много кода на C++, сделанного с чистым SDL2, который я мог бы повторно использовать в этом движке, я подумал, как мне удалось сделать рендеринг opengl для SDL_Texture?

Идея состоит в том, чтобы делать вещи в 3D с opengl, помещать их в SDL_Texture, а затем делать вещи в 2D и визуализировать их с помощью SDL2.

ответ

0

Окажите FBO, используйте PBO, чтобы вытащить пиксели в основную память, затем загрузите пиксели в SDL_Texture.

Это не совсем «быстрый путь», хотя вам, вероятно, лучше всего делать все с помощью OpenGL.

1

Вы должны быть осторожны, поскольку SDL 2 пока не имеет явной поддержки для этого. Вы можете легко растопить состояние GL, которое SDL настроил и использует для правильного отображения.

Однако SDL_gpu (полное раскрытие: Я автор) имеет поддержку для смешивания 2D и 3D, хотя вам придется переносить остальную часть кода SDL_Renderer.

+0

Как вы уже упоминали, SDL2 еще не предназначен для смешивания 2D и 3D, так что вывод самых чистых вариантов кажется, как уже упоминалось: делать все рендеринг с opengl или SDL_gpu (ps1: я буду проверять ответ genpfault, так как опция FBO/PBO, даже если она медленная, решит проблему без перезаписи кода) (ps2: SDL_gpu - это и впечатляющая альтернатива рендеринга, огромное спасибо за то, что вы ее разделили!) – Vaaith