2014-09-18 3 views
0

Я пытаюсь сделать экранный рендеринг, а затем blit на экран (по умолчанию FB), но все, что я вижу, - это черное окно. Я просто очищая невидимую текстуру на зеленый и скопируйте на экран Framebuffer .Йтесь, с код:Blitting from offscreen texture to screen (FB)

glGenTextures(1, &tex); 
glBindTexture(GL_TEXTURE_2D, tex); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
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_BASE_LEVEL, 0); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 640, 480, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); 

glGenFramebuffers(1, &renderTexture); 
glBindFramebuffer(GL_FRAMEBUFFER, renderTexture); 
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, tex, 0); 

if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) 
{ 
    std::cout <<"\n Error in framebuffer"; 
} 

GLint val = glCheckFramebufferStatus(GL_FRAMEBUFFER); 

if(val != GL_FRAMEBUFFER_COMPLETE) 
{ 
    std::cout <<"\n Error in framebuffer : 2"; 
} 

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glClearColor(0.0f,1.0f,0.0f,0.0f); 

glBindFramebuffer(GL_FRAMEBUFFER, 0); 
glBindFramebuffer(GL_READ_FRAMEBUFFER, renderTexture); 

glBlitFramebuffer(0, 0, 128, 128, 0, 0, 128, 128, GL_COLOR_BUFFER_BIT, GL_NEAREST); 
+0

Замечание: нет необходимости проверять статус фреймбуфера дважды, что вы делаете сейчас. Достаточно одного. –

ответ

1

Вы можете установить четкий цвет на зеленый после вы сделали ясным, так что убирали его первоначальный чистый цвет который, если вы не установите его в другом месте, будет черным. Перед очисткой фреймбуфера вам необходимо установить чистый цвет. Код должен быть:

glClearColor(0.0f,1.0f,0.0f,0.0f); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

Смотрите описание glClearColor для справки: https://www.opengl.org/sdk/docs/man/html/glClearColor.xhtml.

+0

Отличный !! Спасибо, что указали это. – user3696282