Я нашел для ответа, но я не могу получить ответ на вопрос.OpenGL - FBO и альфа-смешение
У меня есть FBO, и я не могу получить альфа-смешивание и мультисэмпл для работы. FBO рисует сцену до текстуры, а затем утонет в стандартном фреймбуфере с двумя текстурированными треугольниками. Прямое рисование по умолчанию для фреймбуффера отлично.
Вот разница между стандартным фреймбуфером (сверху) и моим FBO (внизу).
Я использую FBO с 2х цветовых вложений и 1X вложений глубины. (Используется только GL_COLOR_ATTACHMENT0, второй для другой функции) тест
Глубина: Disabled
Blending: Enabled
Multisample: Enabled
Blending функция: GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA
Любые идеи ? Что я делаю не так? Я не могу смешивать любые прозрачные объекты, нет альфы. Если вам требуется больше кода, я могу отредактировать сообщение.
EDIT:
Этот код глубже в структуре кода, я надеюсь, я извлек его правильно.
Настройка FBO:
glGenFramebuffers(1, &_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, _framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, color0_texture_id, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, color1_texture_id, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depth_texture_id, 0);
Настройка цвета текстуры:
glGenTextures(1, &texture_id);
glBindTexture(GL_TEXTURE_2D, texture_id);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
Глубина текстуры же, за исключением одной линии:
// This is probably wrong
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
EDIT:
Blending теперь работает, но все равно не мультисэмпл. Как это сделать?
Как это FBO и текстуры вы предоставляете в настройке? – dari
Мультисэмплинг фактически не включен, поскольку текстуры, прикрепленные к FBO, не являются многопроцессорными текстурами. – peppe
Так каково решение? Как я могу заставить мультисэмпл работать? Вы можете мне помочь? – eSeverus