Пятница, 19 Апреля 2024, 07:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Сглаживание при MRT
Сглаживание при MRT
AlexsSyrДата: Понедельник, 22 Января 2018, 20:17 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Имеется следующий класс для множественной отрисовки.
Код
#include "FBO.h"

bool FBO::Init(unsigned int W, unsigned int H, unsigned int count)
{
    w = W;
    h = H;

    glGenFramebuffers(1, &fbo);
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);

    Log::PrintMessage("Создание FBO ...");

    textures = new GLuint[count];

    glGenTextures(count, textures);
    glGenTextures(1, &depthTexture);

    for (unsigned int i = 0; i < count; i++) {
  glBindTexture(GL_TEXTURE_2D, textures[i]);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, w, h, 0, GL_RGBA, GL_FLOAT, NULL);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0 + i, GL_TEXTURE_2D, textures[i], 0);
    }

    // depth
    glBindTexture(GL_TEXTURE_2D, depthTexture);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32F, w, h, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
    glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depthTexture, 0);

    GLenum* DrawBuffers = new GLenum[count];
    for (unsigned int i = 0; i < count; i++)
  DrawBuffers[i] = GL_COLOR_ATTACHMENT0 + i;

    glDrawBuffers(count, DrawBuffers);

    GLenum Status = glCheckFramebufferStatus(GL_FRAMEBUFFER);

    if (Status != GL_FRAMEBUFFER_COMPLETE)
    {
  Log::PrintError("Не удалось создать FBO");
  return false;
    }

    // restore default FBO
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);

    Log::PrintMessage("FBO успешно создан");

    return true;
}

void FBO::Bind()
{
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);

    glViewport(0, 0, w, h);
}

void FBO::BindDefaultFBO()
{
    glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
}

FBO::FBO()
{
}

FBO::~FBO()
{
}


Может кто подсказать, как реализовать сглаживание при данном подходе к рендерингу ?
Форум игроделов » Программирование » C/C++ » Сглаживание при MRT
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг