From 8c99574f57793473f5ccb5d24723557b77664931 Mon Sep 17 00:00:00 2001
From: Kamil Dudka <kdudka@redhat.com>
Date: Wed, 21 Jan 2009 14:09:16 +0100
Subject: [PATCH] rt vis
---
src/CMakeLists.txt | 2 +-
src/Visualizer.cpp | 23 +++++++++++++++++++----
src/Visualizer.h | 5 ++++-
src/rrv-compute.cpp | 18 ++++++++++++++++--
4 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2e52685..7e467e0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -82,7 +82,7 @@ ADD_LIBRARY(rrv STATIC ArgumentParser.cpp BarrelEntity.cpp ConsoleProgressIndica
TARGET_LINK_LIBRARIES(rrv ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES} ${MINGW_LIBRARIES})
# Executable binary rrv-compute
-ADD_EXECUTABLE(rrv-compute rrv-compute.cpp ComputeArguments.cpp)
+ADD_EXECUTABLE(rrv-compute rrv-compute.cpp ComputeArguments.cpp Visualizer.cpp)
TARGET_LINK_LIBRARIES(rrv-compute rrv)
# Executable binary rrv-visualize
diff --git a/src/Visualizer.cpp b/src/Visualizer.cpp
index 565e2eb..02a2734 100644
--- a/src/Visualizer.cpp
+++ b/src/Visualizer.cpp
@@ -1,6 +1,7 @@
#include "Visualizer.h"
#include "Triangle.h"
#include "TriangleSetExt.h"
+#include "Scene.h"
#include <stdlib.h>
#include <fstream>
@@ -12,10 +13,11 @@
#else
#endif
-TriangleSetExt * Visualizer::patchSequenceEnumerator_;
+TriangleSetExt * Visualizer::ts_;
Visualizer::TColorInput Visualizer::colorInput;
GLuint Visualizer::scene_;
+Scene *Visualizer::src_;
int Visualizer::xnew, Visualizer::ynew, Visualizer::znew; /* actual position */
int Visualizer::xold, Visualizer::yold, Visualizer::zold; /* old position */
@@ -125,6 +127,12 @@ void Visualizer::onKeyboard(unsigned char key, int, int)
onReshape(WindowWidth, WindowHeight);
glutPostRedisplay();
break;
+ case 'r':
+ delete ts_;
+ ts_ = src_->dumpForVis();
+ createCallList();
+ glutPostRedisplay();
+ break;
case 's' : /* print to bitmap - screenshot */
saveScreenshot(screenshotFileName);
break;
@@ -324,10 +332,17 @@ void Visualizer::createWindow(const char * title)
*/
void Visualizer::visualize(const char * setTitle, TriangleSetExt * patchSequenceEnumerator)
{
- patchSequenceEnumerator_ = patchSequenceEnumerator;
+ ts_ = patchSequenceEnumerator;
createWindow(setTitle);
}
+void Visualizer::visualize(Scene *src)
+{
+ src_ = src;
+ ts_ = new TriangleSetExt;
+ createWindow("rrv-compute");
+}
+
/**
* Screenshot
*/
@@ -336,7 +351,7 @@ void Visualizer::takeScreenshot(char * filename, TriangleSetExt * patchSequenceE
doScreenshot = true;
screenshotFileName = filename;
- patchSequenceEnumerator_ = patchSequenceEnumerator;
+ ts_ = patchSequenceEnumerator;
createWindow("Screenshot");
}
@@ -481,7 +496,7 @@ void Visualizer::createCallList(void)
{
glNewList(scene_,GL_COMPILE);
- start(patchSequenceEnumerator_, colorInput);
+ start(ts_, colorInput);
glEndList();
}
diff --git a/src/Visualizer.h b/src/Visualizer.h
index d77395c..546fa69 100644
--- a/src/Visualizer.h
+++ b/src/Visualizer.h
@@ -16,6 +16,7 @@
#include <GL/glut.h>
#ifndef BUILDING_DOX
+class Scene;
class TriangleSetExt;
#endif
@@ -31,6 +32,7 @@ class Visualizer{
* @param te Filled patch container with computed patch and vertex colors.
*/
static void visualize(const char *title, TriangleSetExt *te); /* visualize of scene in GLUT window */
+ static void visualize(Scene *);
/**
* Using TGA image format to save screenshot.
@@ -44,10 +46,11 @@ class Visualizer{
private:
typedef enum { INTERPOLATE_RADIOSITY, INTERPOLATE_RADIOSITY_RAW, RADIOSITY_LAST, RADIOSITY, REFLECTIVITY, EMISSION, REFLECT_EMISS } TColorInput;
- static TriangleSetExt * patchSequenceEnumerator_;
+ static TriangleSetExt * ts_;
static TColorInput colorInput;
static GLuint scene_;
+ static Scene *src_;
static int xnew, ynew, znew; /* actual position */
static int xold, yold, zold; /* old position */
diff --git a/src/rrv-compute.cpp b/src/rrv-compute.cpp
index deb13b3..dd9a325 100644
--- a/src/rrv-compute.cpp
+++ b/src/rrv-compute.cpp
@@ -2,12 +2,14 @@
#include "RadiosityRenderer.h"
#include "ConsoleProgressIndicator.h"
#include "ComputeArguments.h"
+#include "Visualizer.h"
#ifndef NDEBUG
# include <iostream>
#endif
#include <iomanip>
+#include <pthread.h>
class ContinousSaver: public ProgressObserverMultiStep {
Scene *scene_;
@@ -53,6 +55,12 @@ class ContinousSaver: public ProgressObserverMultiStep {
}
};
+Scene scene;
+void *vis(void *) {
+ Visualizer::visualize(&scene);
+ return 0;
+}
+
int main(int argc, char *argv[]) {
ComputeArguments *args = new ComputeArguments();
args->parseArguments( argc, argv );
@@ -63,8 +71,6 @@ int main(int argc, char *argv[]) {
std::string fileName(args->getFileIn());
// Load scene
- Scene scene;
-
try
{
scene.load(args->getFileIn());
@@ -81,6 +87,14 @@ int main(int argc, char *argv[]) {
// Patch division
//scene.divide(DIVIDE_TO);
scene.divide(args->getDivide());
+
+ // ////////////////////////////////////////////////////////////
+ pthread_attr_t attr;
+ if (0!= pthread_attr_init(&attr));
+
+ pthread_t thread;
+ if (0!= pthread_create(&thread, &attr, vis, 0));
+ // ////////////////////////////////////////////////////////////
// Compute radiosity
RadiosityRenderer *renderer =
--
1.6.1