OpenGL ES 2.0 возможно ли одновременное рисование в глубину и «цветной» буфер (без MRT)?

#opengl-es #opengl-es-2.0 #depth-buffer

#opengl-es #opengl-es-2.0 #глубина-буфер

Вопрос:

Простой вопрос OpenGL ES 2.0. Если мне нужно иметь буфер глубины и цвета, должен ли я дважды отображать геометрию? Или я могу просто привязать / присоединить буфер глубины во время рендеринга цветной рамки?

Или для этого мне нужно MRT / render дважды?

Ответ №1:

Это обычный режим работы OpenGL для обновления как буфера цвета, так и буфера глубины во время рендеринга, если они оба существуют и включены.

Если вы выполняете рендеринг в FBO и хотите использовать буфер глубины, вам необходимо прикрепить либо цветную текстуру GL_COLOR_ATTACHMENT0 , либо буфер рендеринга цвета, вызвав glFramebufferTexture2D() или glFramebufferRenderbuffer() соответственно. Затем выделите буфер визуализации глубины с glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, ...) помощью и присоедините его к GL_DEPTH_ATTACHMENT вызову glFramebufferRenderbuffer() .

После этого вы можете выполнить рендеринг один раз, и ваши буферы цвета и глубины будут обновлены.