У меня есть функция, которая имеет минимальное требование для битовой глубины буфера трафарета OpenGL. Я хочу, чтобы эта функция возвращала ошибку, если текущий буфер трафарета не соответствует этому требованию (или если нет буфера трафарета). Поскольку GL_STENCIL_BITS устарел, каков правильный способ запроса битовой глубины буфера трафарета?Как запросить глубину буфера трафарета OpenGL
0
A
ответ
1
OpenGL ES 2.0 по-прежнему имеет GL_STENCIL_BITS
. Так это должно работать для фреймбуфера по умолчанию:
GLint stencilBits = 0;
glGetIntegerv(GL_STENCIL_BITS, &stencilBits);
Для кО, вы должны знать, как правило, если у вас есть буфер трафарета, и насколько глубоко это, так как вы его создали. Но если вам нужно запросить его:
GLint bufId = 0;
glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER,
GL_STENCIL_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &bufId);
GLint stencilSize = 0;
if (bufId != 0) {
glBindRenderbuffer(GL_RENDERBUFFER, bufId);
glGetRenderbufferParameteriv(GL_RENDERBUFFER,
GL_RENDERBUFFER_STENCIL_SIZE, &stencilSize);
}
Для OpenGL основного профиля, это новый способ получения битового счетчика буфера трафарета для фреймбуфера по умолчанию:
GLint stencilSize = 0;
glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER,
GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &stencilSize);
и для связанный в настоящее время FBO:
GLint stencilSize = 0;
glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER,
GL_STENCIL_ATTACHMENT, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, &stencilSize);
Для ES 3.0, похоже, оба этих варианта поддерживаются на основе спецификации.
Для FBOs с комбинированными установками глубины/трафарета ситуация немного сложнее. Если вам это нужно, обратитесь к спецификациям для получения точного поведения.
Смежные вопросы
- 1. Получение буфера трафарета OpenGL-ES
- 2. Глубина буфера трафарета в OpenTK
- 3. Учитывая глубину трафарета
- 4. OpenGL ES 2.0 придают текстуру буфера трафарета
- 5. OpenGL: Приобретение только буфера трафарета и буфер глубины?
- 6. Связывание буфера визуализации трафарета с буфером кадров в opengl
- 7. Android OpenGL ES 1.1: Чтение из буфера трафарета
- 8. Вложение буфера глубины и трафарета FBO
- 9. Порядок рисования webgl, буфера трафарета
- 10. Ошибки при установке глубины/буфера трафарета фреймбуфера
- 11. android opengl 2.0 буфер трафарета не работает
- 12. Как проверить содержимое буфера глубины/трафарета
- 13. OpenGL - тест трафарета в прямоугольнике
- 14. Opengl framebuffer Отдельная текстура трафарета
- 15. намечение 3D модель с использованием трафарета-буфера
- 16. Портирование функциональности трафарета OpenGL на DirectX 11
- 17. Нечеткие значения буфера для шаблонов трафарета 0?
- 18. Рисовать текст с помощью буфера трафарета
- 19. Просмотр буфера глубины в OpenGL
- 20. Глубина буфера трафарета не работает DirectX11
- 21. Как создать FBO с буфером трафарета в OpenGL ES 2.0?
- 22. OpenGL/SDL2: бит буфера шаблона всегда 0 на ПК
- 23. Как визуализировать отражения в OpenGL ES на iPhone без буфера трафарета?
- 24. OpenGL - не записывать глубину, если альфа
- 25. Тест трафарета OpenGL не работает должным образом
- 26. Параметры трафарета между DirectX и OpenGL
- 27. OpenGl: проблема с буфером трафарета (Wall + Window)?
- 28. Буфер трафарета SDL2 и OpenGL не работает
- 29. Буфер трафарета и отсроченный рендеринг с использованием OpenGL и GLSL
- 30. Как отрегулировать глубину рендеринга в OpenGL Haskell?
спасибо. Делает ли glGetFramebufferAttachmentParameteriv (GL_DRAW_FRAMEBUFFER, GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, & stencilSize) работать независимо от конфигурации? Я прочитал в документации, что параметры различаются в зависимости от того, используется ли FBO или нет. – Emil
Я добавил еще несколько случаев для ФБО. –