Skip to content
Snippets Groups Projects
Commit f7f00772 authored by Maxime Curioni's avatar Maxime Curioni
Browse files

soc-2008-mxcurioni: first (blank) file upload for SWIG removal, in...

soc-2008-mxcurioni: first (blank) file upload for SWIG removal, in source/blender/freestyle/intern/python. The migration will be based on source/blender/freestyle/intern/swig/ModuleWrapper.{cpp,h}
parent 270184e1
No related branches found
No related tags found
No related merge requests found
Showing
with 47 additions and 29 deletions
...@@ -7,7 +7,7 @@ defs = [] ...@@ -7,7 +7,7 @@ defs = []
incs = '' incs = ''
incs += '../blenkernel ../blenlib ../imbuf ../makesdna ../python ' incs += '../blenkernel ../blenlib ../imbuf ../makesdna ../python '
incs += '../render/extern/include ../render/intern/include' incs += '../render/extern/include ../render/intern/include ../include ../src'
incs += ' #/extern/freestyle/lib3ds' incs += ' #/extern/freestyle/lib3ds'
incs += ' ' + env['BF_PYTHON_INC'] incs += ' ' + env['BF_PYTHON_INC']
incs += ' ' + env['BF_LIB3DS_INC'] incs += ' ' + env['BF_LIB3DS_INC']
......
...@@ -106,11 +106,12 @@ extern "C" { ...@@ -106,11 +106,12 @@ extern "C" {
void FRS_render(Render* re, int render_in_layer) { void FRS_render(Render* re, int render_in_layer) {
if(render_in_layer) { // if(render_in_layer) {
view->workingBuffer = GL_COLOR_ATTACHMENT0_EXT; // view->workingBuffer = GL_COLOR_ATTACHMENT0_EXT;
} else { // } else {
// view->workingBuffer = GL_BACK;
// }
view->workingBuffer = GL_BACK; view->workingBuffer = GL_BACK;
}
// add style module // add style module
string style_module = pathconfig->getProjectDir() + string style_module = pathconfig->getProjectDir() +
...@@ -134,8 +135,12 @@ extern "C" { ...@@ -134,8 +135,12 @@ extern "C" {
GLuint framebuffer, renderbuffers[2]; GLuint framebuffer, renderbuffers[2];
GLenum status; GLenum status;
RenderLayer *rl; RenderLayer *rl;
GLubyte *pixc;
if(render_in_layer) { if(render_in_layer) {
pixc = (GLubyte *) malloc( 4 * re->winx * re->winy * sizeof(GLubyte) );
cout << "Freestyle as a render layer - SETUP" << endl; cout << "Freestyle as a render layer - SETUP" << endl;
// set up frame buffer // set up frame buffer
...@@ -146,7 +151,7 @@ extern "C" { ...@@ -146,7 +151,7 @@ extern "C" {
glGenRenderbuffersEXT(2, renderbuffers); glGenRenderbuffersEXT(2, renderbuffers);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffers[0]); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffers[0]);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA16F_ARB, re->winx, re->winy); glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGBA, re->winx, re->winy);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, renderbuffers[0]); glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, renderbuffers[0]);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffers[1]); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffers[1]);
...@@ -164,20 +169,32 @@ extern "C" { ...@@ -164,20 +169,32 @@ extern "C" {
} }
glPushAttrib(GL_VIEWPORT_BIT); glPushAttrib(GL_VIEWPORT_BIT);
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); // should not be needed
glViewport(0, 0, re->winx, re->winy); glViewport(0, 0, re->winx, re->winy);
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); // really needed ?
}
FRS_render(re, render_in_layer); FRS_render(re, render_in_layer);
if(render_in_layer) { // keep first Freestyle layer
for(rl = (RenderLayer *)re->result->layers.first; rl; rl= rl->next) { for(rl = (RenderLayer *)re->result->layers.first; rl; rl= rl->next)
if(rl->layflag & SCE_LAY_FRS) { if(rl->layflag & SCE_LAY_FRS)
break;
cout << "Freestyle as a render layer - RESULT" << endl; cout << "Freestyle as a render layer - RESULT" << endl;
// transfer render to layer // transfer render to layer
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadPixels(0, 0, re->winx, re->winy, GL_RGBA, GL_FLOAT, rl->rectf ); glReadPixels(0, 0, re->winx, re->winy, GL_RGBA, GL_UNSIGNED_BYTE, pixc );
int p;
for(int i = 0; i < re->winx; i++) {
for(int j = 0; j < re->winy; j++){
p = 4*(i*re->winy + j);
*(rl->rectf + p ) = 1.0*pixc[ p ]/255.0;
*(rl->rectf + p + 1) = 1.0*pixc[ p+1 ]/255.0;
*(rl->rectf + p + 2) = 1.0*pixc[ p+2 ]/255.0;
*(rl->rectf + p + 3) = 1.0*pixc[ p+3 ]/255.0;
}
}
// bind window // bind window
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
...@@ -185,10 +202,10 @@ extern "C" { ...@@ -185,10 +202,10 @@ extern "C" {
glPopAttrib(); glPopAttrib();
glDeleteRenderbuffersEXT(2, renderbuffers); glDeleteRenderbuffersEXT(2, renderbuffers);
glDeleteFramebuffersEXT(1, &framebuffer); glDeleteFramebuffersEXT(1, &framebuffer);
}
}
} else { } else {
// copy result into render window FRS_render(re, render_in_layer);
RenderResult rres; RenderResult rres;
RE_GetResultImage(re, &rres); RE_GetResultImage(re, &rres);
view->readPixels(0, 0, re->winx, re->winy, AppGLWidget::RGBA, rres.rectf ); view->readPixels(0, 0, re->winx, re->winy, AppGLWidget::RGBA, rres.rectf );
...@@ -196,6 +213,7 @@ extern "C" { ...@@ -196,6 +213,7 @@ extern "C" {
re->display_draw(re->result, NULL); re->display_draw(re->result, NULL);
} }
controller->CloseFile(); controller->CloseFile();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment