2014-12-09 2 views
0

У меня есть функция, которая имеет минимальное требование для битовой глубины буфера трафарета OpenGL. Я хочу, чтобы эта функция возвращала ошибку, если текущий буфер трафарета не соответствует этому требованию (или если нет буфера трафарета). Поскольку GL_STENCIL_BITS устарел, каков правильный способ запроса битовой глубины буфера трафарета?Как запросить глубину буфера трафарета OpenGL

ответ

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 с комбинированными установками глубины/трафарета ситуация немного сложнее. Если вам это нужно, обратитесь к спецификациям для получения точного поведения.

+0

спасибо. Делает ли glGetFramebufferAttachmentParameteriv (GL_DRAW_FRAMEBUFFER, GL_STENCIL, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE, & stencilSize) работать независимо от конфигурации? Я прочитал в документации, что параметры различаются в зависимости от того, используется ли FBO или нет. – Emil

+0

Я добавил еще несколько случаев для ФБО. –

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