Я занимаюсь внедрением пространства sRGB в своем приложении.Проверьте кодировку цвета в буфере рисования буфера по умолчанию для SRGB
Из того, что я прочитал here, here, here и here я должен работать в линейном RGB (LRGB) пространство для всего трубопровода, и я не должен заботиться о каких-либо гамма-коррекции, так как OpenGL будет заботиться о нем для меня дано I включите GL_FRAMEBUFFER_SRGB
и изображение будет GL_SRGB8
или GL_SRGB8_ALPHA8
.
Итак, моя идея - быть уверенным, что я ввожу входные данные в пространстве LRGB, а затем создаю свою последнюю текстуру (делая глубину пилинга) на фреймбуфере по умолчанию, который позаботится о переносе моих цветов в пространство SRGB, чтобы я увидел их на LRGB на моем мониторе.
Хорошо, теперь я хочу проверить буфер рисования по умолчанию для фреймбуфера по умолчанию.
int[] drawBuffer = new int[1];
gl3.glGetIntegerv(GL3.GL_DRAW_BUFFER, drawBuffer, 0);
System.out.println("draw buffer " + (drawBuffer[0] == GL3.GL_BACK ? "BACK " : drawBuffer[0]));
это подтверждает мой Жеребьевка буфер GL_BACK, теперь я хочу, чтобы проверить кодировку цвета
int[] framebufferAttachmentParameter = new int[1];
gl3.glGetFramebufferAttachmentParameteriv(GL3.GL_DRAW_FRAMEBUFFER, GL3.GL_BACK,
GL3.GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, framebufferAttachmentParameter, 0);
но glGetFramebufferAttachmentParameteriv
терпит неудачу:
glGetError() возвращал следующие коды ошибок после того, вызов для glGetFramebufferAttachmentParameteriv (0x8CA9, 0x405, 0x8210, < [I>, 0x0): GL_INVALID_ENUM (1280 0x500)
Чтение here они говорят
Если фреймбуфера по умолчанию обязан предназначаться то привязанность должна быть одна из GL_FRONT_LEFT, GL_FRONT_RIGHT, GL_BACK_LEFT или GL_BACK_RIGHT
Но мой код сказать мой дро буфер GL_BACK
. Чтение here говорят, что GL_BACK
- это просто псевдоним, который указывает как GL_BACK_LEFT
, так и GL_BACK_RIGHT
, если я делаю стереотическую визуализацию.
Так что мои вопросы:
я прав при условии, что я пишу
GL_BACK_LEFT
данной мой Жеребьевка буфер возвращаетGL_BACK
как я могу проверить, если stereotic рендеринга вкл/выкл? Конечно, поскольку я даже не знаю, как включить его, я предполагаю, что он выключен. Но что-то я делаю, просто добавляя буфер GL_BACK/FRONT_LEFT/RIGHT или что-то еще?
Могу ли я включить пространство SRGB в буфере рисования по умолчанию для стандартного фреймбуфера?