2017-01-04 17 views
3

У меня есть система для рендеринга различных объектов в разные текстуры RGBA с использованием OpenGL в C++. Я хотел бы сложить эти текстуры поверх каждого из них, но моя проблема в том, что каждая текстура содержит glClearColor.OpenGL Render to Transparent Texture

Как определить OpenGL, чтобы сделать прозрачные части прозрачной текстуры (0.0f alpha), поэтому я все еще вижу части слоев за другими слоями?

ответ

2

Четвертый параметр glClearColor позволяет указать значение альфа-значения, которое необходимо установить при очистке объекта рендеринга, поэтому вы можете просто передать 0, чтобы сделать его прозрачным.

Ваша цель визуализации, очевидно, должна иметь альфа-канал. Кроме того, очистка альфа-канала с использованием значения, указанного с помощью glClearColor, может быть включена или отключена с помощью glColorMask.

+0

Спасибо! Не могу поверить, что я даже не думал об этом! Это своего рода работа, фон текстур ушел! Но я получаю зверский фильм, похожий на мерцание, любую идею, почему это может быть? Использование glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); Еще раз спасибо! – GDN9

+0

Мерцание звучит как проблема синхронизации. https://www.khronos.org/opengl/wiki/Synchronization – samgak

 Смежные вопросы

  • Нет связанных вопросов^_^