soc-2008-mxcurioni: First render ! It should render the teapot upside down on a black background. The correction was made by following Yafray's rendering and display implementation, which is very clear.

This commit is contained in:
Maxime Curioni
2008-05-29 00:27:09 +00:00
parent 9986b5cd73
commit 9a6302e109
5 changed files with 52 additions and 8 deletions

View File

@@ -6,13 +6,26 @@
#include <iostream>
#ifdef __cplusplus
extern "C" {
#endif
#include "render_types.h"
//#include "renderdatabase.h"
/* display_draw() needs render layer info */
#include "renderpipeline.h"
#ifdef __cplusplus
}
#endif
using namespace std;
#ifdef __cplusplus
extern "C" {
#endif
void FRS_execute() {
void FRS_execute(Render* re) {
cout << "Freestyle start" << endl;
Config::Path pathconfig;
@@ -20,16 +33,39 @@ extern "C" {
AppGLWidget *view = new AppGLWidget;
c->SetView(view);
view->setWidth(640);
view->setHeight(640);
unsigned int width = re->winx;
unsigned int height = re->winy;
view->setWidth(width);
view->setHeight(height);
c->Load3DSFile( TEST_3DS_FILE );
c->InsertStyleModule( 0, TEST_STYLE_MODULE_FILE );
c->toggleLayer(0, true);
c->ComputeViewMap();
c->DrawStrokes();
RenderResult rres;
RE_GetResultImage(re, &rres);
float *rgb = new float[3*width*height];
view->readPixels(0,0,width,height,AppGLWidget::RGB, rgb);
for (unsigned short y=0; y<height; y++) {
float* bpt = (float*)rres.rectf + ((y*width) << 2);
for (unsigned short x=0; x<width; x++) {
float *pos = rgb + 3 * ( y*width + x );
bpt[0] = pos[0]; // r
bpt[1] = pos[1]; // g
bpt[2] = pos[2]; // b
bpt[3] = 1.0; // a
bpt += 4;
}
}
re->result->renlay = render_get_active_layer(re, re->result);
re->display_draw(re->result, NULL);
cout << "Freestyle end" << endl;