#opengl-4
#opengl-4
Вопрос:
glblitframebuffer требует соответствующего внутреннего формата, так каков внутренний формат компонента глубины фреймбуфера по умолчанию?Существует ли стандарт?Я не смог найти для него документ.
Для карты nvidia моего ноутбука требуется GL_DEPTH_COMPONENT24. Но есть 16 и 32 для опций. Интересно, отличается ли это для другого поставщика.
Комментарии:
1. Это зависит от оборудования и драйвера.
2. Итак, что мне делать, если я ожидаю, что мой код будет работать на другом оборудовании?
3. Смотрите Требуемые форматы
Ответ №1:
Редко есть веская причина для переноса глубины FBO в буфер глубины по умолчанию. Если вы выполняете рендеринг в один FBO, и вам нужно выполнить рендеринг после blit, лучше всего выполнить этот рендеринг в другой FBO, а затем перенести его в фреймбуфер по умолчанию.
При этом, когда вы создаете контекст OpenGL, вы можете попросить, чтобы буфер глубины по умолчанию сохранял некоторое количество битов. Как это сделать, зависит от того, как вы создали контекст.
Однако реализация не обязательно должна соответствовать вашему запросу. Итак, вам нужно спросить, что вы получили. Вам нужно использовать glGetFramebufferAttachmentParameter
. При этом вы можете запросить GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
из GL_DEPTH
вложения.
Комментарии:
1. Да, теперь я создаю еще один FBO для своего конвейера рендеринга и просто добавляю результат цвета к FBO по умолчанию.