Мне нужно некоторое представление о MRT и привязке цветовых каналов [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Мне нужно некоторое представление о MRT и привязке цветовых каналов [закрыто]

Сообщение Anonymous »

Я пытаюсь выяснить, что может быть не так с моей настройкой.
Вот код:

Код: Выделить всё

void initFrameBuffer() {
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);

glGenTextures(2, textureColorbuffer);
for (int i = 0; i < 2; i++) {
glBindTexture(GL_TEXTURE_2D, textureColorbuffer[i]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, glWindowWidth, glWindowHeight, 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);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, textureColorbuffer[i], 0);
}

glGenRenderbuffers(1, &rbo);
glBindRenderbuffer(GL_RENDERBUFFER, rbo);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, glWindowWidth, glWindowHeight);
glBindRenderbuffer(GL_RENDERBUFFER, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo);

GLenum attachments[2] = { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 };
glDrawBuffers(2, attachments);

checkFramebufferStatus();

glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
Простая инициализация кадрового буфера, экземпляр которой будет создан в следующей основной функции:

Код: Выделить всё

int main(int argc, const char* argv[]) {

if (!initOpenGLWindow()) {
glfwTerminate();
return 1;
}

glfwSetCursorPosCallback(glWindow, mouseCallback);
glfwSetInputMode(glWindow, GLFW_CURSOR, GLFW_CURSOR_DISABLED);

initQuadScreenVertices();
initOpenGLState();
initObjects();
initShaders();
initUniforms();

initFrameBuffer();

initSnowFlakeData(); //VERY IMPORTANT
initSnowflakes();

while (!glfwWindowShouldClose(glWindow)) {

// first pass
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // we're not using the stencil buffer now
glEnable(GL_DEPTH_TEST);

//Here are my rendering functions for my object scene, will ignore

// second pass
glBindFramebuffer(GL_FRAMEBUFFER, 0); // back to default
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

screenFrame.useShaderProgram();
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, textureColorbuffer[1]); 

Подробнее здесь: [url]https://stackoverflow.com/questions/79201125/i-would-need-some-insight-into-mrt-and-color-channel-binding[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»