[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15437] branches/soc-2008-mxcurioni/source /blender/freestyle/intern/app_blender: soc-2008-mxcurioni: render layer with FBOs -> render buffers, version 2.
Maxime Curioni
maxime.curioni at gmail.com
Sat Jul 5 10:51:20 CEST 2008
Revision: 15437
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15437
Author: mxcurioni
Date: 2008-07-05 10:50:41 +0200 (Sat, 05 Jul 2008)
Log Message:
-----------
soc-2008-mxcurioni: render layer with FBOs -> render buffers, version 2. Still not working.
Modified Paths:
--------------
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp
Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp 2008-07-05 06:22:15 UTC (rev 15436)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/AppGLWidget.cpp 2008-07-05 08:50:41 UTC (rev 15437)
@@ -413,7 +413,7 @@
// }
// else if(_backBufferFlag)
// glDrawBuffer(GL_BACK);
- glDrawBuffer( workingBuffer ); //soc
+ //glDrawBuffer( workingBuffer ); //soc
// Projection Matrix
//==================
@@ -431,7 +431,7 @@
void AppGLWidget::releaseCanvas()
{
makeCurrent();
- glDrawBuffer( workingBuffer ); //soc
+ //glDrawBuffer( workingBuffer ); //soc
glPopAttrib();
}
Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp 2008-07-05 06:22:15 UTC (rev 15436)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/api.cpp 2008-07-05 08:50:41 UTC (rev 15437)
@@ -132,7 +132,7 @@
void FRS_execute(Render* re, int render_in_layer) {
- GLuint framebuffer, renderbuffer;
+ GLuint framebuffer, renderbuffers[2];
GLenum status;
RenderLayer *rl;
@@ -143,23 +143,28 @@
glGenFramebuffersEXT(1, &framebuffer);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer);
- // set up render buffer
- glGenRenderbuffersEXT(1, &renderbuffer);
- glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffer);
- glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA8, re->winx, re->winy);
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, renderbuffer);
+ // set up render buffer: one color buffer, one depth buffer
+ glGenRenderbuffersEXT(2, renderbuffers);
+
+ glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffers[0]);
+ glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, re->winx, re->winy);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, renderbuffers[0]);
+
+ glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffers[1]);
+ glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, re->winx, re->winy);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, renderbuffers[1]);
// status verification
status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
if (status != GL_FRAMEBUFFER_COMPLETE_EXT){
cout << "Framebuffer setup error" << endl;
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ glDeleteRenderbuffersEXT(2, renderbuffers);
+ glDeleteFramebuffersEXT(1, &framebuffer);
return;
}
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
-
- } else {
- glDrawBuffer(GL_BACK);
}
FRS_render(re, render_in_layer);
@@ -168,14 +173,14 @@
for(rl = (RenderLayer *)re->result->layers.first; rl; rl= rl->next) {
if(rl->layflag & SCE_LAY_FRS) {
cout << "Freestyle as a render layer - RESULT" << endl;
-
+
// transfer render to layer
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadPixels(0, 0, re->winx, re->winy, GL_RGBA, GL_FLOAT, rl->rectf );
// bind window
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- glDeleteRenderbuffersEXT(1, &renderbuffer);
+ glDeleteRenderbuffersEXT(2, renderbuffers);
glDeleteFramebuffersEXT(1, &framebuffer);
}
}
More information about the Bf-blender-cvs
mailing list