00001 #include <Inventor/sys/port.h>
00002
00003 #include <LDM/nodes/SoDataCompositor.h>
00004 #include <Inventor/fields/SoSFBool.h>
00005
00006
00007
00008
00009
00010 #ifdef BUILDING_DLL
00011 #define DLL_EXPORT VC_DLL_EXPORT
00012 #else
00013 #define DLL_EXPORT VC_DLL_IMPORT
00014 #endif
00015
00016
00018
00019
00021
00022 class DLL_EXPORT MedicalCPUDataCompositor : public SoDataCompositor
00023 {
00024 SO_NODE_HEADER( MedicalCPUDataCompositor );
00025
00026 public:
00027
00028 SoSFBool useCudaIfAvailable;
00029
00030
00031 MedicalCPUDataCompositor();
00032
00033
00034 virtual ~MedicalCPUDataCompositor();
00035
00036 static void initClass();
00037 static void exitClass();
00038
00039
00040
00041 virtual void compose(int numVolumeData, const SbVec3i32& tileDimension,
00042 int* vdid, SoBufferObject** inputBuffer, SoBufferObject* outputBuffer);
00043
00044
00045
00046 virtual void compose(int numDataSet, const SbVec3i32& tileDimension,
00047 int* vdid, SoBufferObject** inputBuffer, SoDataCompositor::DataType* dataTypes,
00048 SoBufferObject* outputBuffer);
00049
00050 private:
00051
00052
00053 void composeRGBAInCPU( int numVolumeData, const SbVec3i32& tileDimension,
00054 int* vdid, SoBufferObject** inputBufferObject, SoBufferObject* outputBufferObject );
00055
00056
00057 void composeInCPU(int numVolumeData, const SbVec3i32& tileDimension,
00058 int* vdid, SoBufferObject** inputBuffer, SoBufferObject* outputBuffer);
00059
00060
00061 void composeInCUDA(int numVolumeData, const SbVec3i32& tileDimension,
00062 int* vdid, SoBufferObject** inputBuffer, SoBufferObject* outputBuffer);
00063 };
00064
00065