2

У меня возникают проблемы с буфером глубины msaa, разрешающим текстуру глубины. Я создаю свой glTexImage2d как для моей цветовой текстуры, так и для моей текстуры глубины и привязываю их к фреймбуферу «разрешение» (не-msaa). Затем я создаю и привязываю другой фреймбуфер и создаю свои мультисэмплированные рендерингбуферы (как цвета, так и глубины). Я знаю, чтобы получить информацию о цветовой тексту из многозадачного рендеринга-буфера, я просто блистаю с буфером записи, являющимся моим буфером текстурной текстуры, и буфером чтения, являющимся моим msaa-framebuffer. Мой вопрос заключается в том, как разбить мой мультисэмперированный буфер глубины на мою глубинную текстуру.Как разрешить многозадачный буфер глубины текстуре глубины?

ответ

3

Вы сделали бы это так же, как и для цветового буфера, только вы должны использовать GL_DEPTH_BUFFER_BIT и убедитесь, что используете режим GL_NEAREST для режима фильтра. Если вы хотите линейную фильтрацию в буфере глубины/трафарета по какой-либо причине, вы можете сделать это в GLSL, если вы используете текстуру глубины (конечно, это все еще остается недопустимым для текстур MSAA), но это недействительно для этого, используя glBlitFramebuffer (...) ,

Вам не нужно делать какие-либо из glReadBuffer (...) нонсенс, как вы делаете, когда вы хотите выбрать индивидуальный цвет буфера, glBlitFramebuffer (...) скопирует буфер глубины от связанного GL_READ_FRAMEBUFFER к связанным GL_DRAW_FRAMEBUFFER.

+0

Итак, если я blitting цветной буфер, например ... glDrawBuffer (GL_COLOR_ATTACHMENT0); glReadBuffer (GL_COLOR_ATTACHMENT0); glBlitFrameBuffer (0, 0, mWidth, mHeight, 0, 0, mWidth, mHeight, GL_COLOR_BUFFERBIT, GL_NEAREST); ... могу ли я просто добавить бит буфера глубины в BlitFrameBuffer, например ... glBlitFrameBuffer (0, 0, mWidth, mHeight, 0, 0, mWidth, mHeight, GL_COLOR_BUFFERBIT | GL_DEPTH_BUFFER_BIT, GL_NEAREST); ... и gl выяснит это? –

+0

Это _should_ работать. Если ваши кадры для чтения и рисования имеют цветное прикрепление 0 и буфер глубины. Вещи могут быть волосатыми, если у вас есть буфер цвета и буфер глубины, которые имеют разные размеры (да, это возможно), или если буфер глубины - это упакованная глубина/трафарет (как это обычно бывает, если вы хотите перейти прямо в окно). –

+0

Я должен добавить к этому, что текстуры глубины MSAA являются функцией Shader Model 4.1 (т. Е. Они не были *** обязательными *** до SM 4.1). Они не поддерживаются на многих аппаратных средствах старше, чем AMD Radeon HD 3xxx или GeForce 2xx. Теоретически это должно повлиять на вас только в том случае, если вы движетесь в противоположном направлении, пытаясь размыть текстуру глубины MSAA на единичную выборку renderbuffer/texture, но вы никогда не знаете. –

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