이전 글(VTK 9.0.1 컴파일하기)에서 만들어진 VTK 빌드 결과물을 가지고 MFC 대화상자에 VTK를 올려보았다.


Test를 위한 대화상자 생성

Visual Studio 2019버전으로 테스트를 위한 대화상자 기반의 프로젝트 TestVTK를 만들었다. 2019버전으로는 처음 프로젝트를 먄들어보았는데 이전 버전과 프로젝트를 만드는 방법이 다소 달라졌고 프로젝트 구성이 달라졌다. VTK를 64비트만 빌드하여 테스트 프로젝트도 64비트 구성만 하였다.


VTK Property 파일 생성 및 구성 설정

Property Manager 에서 새로운 Property Sheet를 VTK_v9.0.1.props 파일로 만들었다.




VTK 경로를 하나의 설정으로 통일하여 관리하기 위해 VTK 빌드 결과물 경로를 User Macro에 VTK_DIR 이름으로 추가한다.


VTK_DIR 매크로를 이용하여 Include 및 Library 경로에 VTK 경로를 설정한다.

VC++ Directories > Include Directories: $(VTK_DIR)\include\vtk-9.0

VC++ Directories > Library Directories: $(VTK_DIR)\lib


 



VTK 사용을위한 기본 헤더 파일 작성

VTK 사용에 필요한 내용을 하나의 헤더파일로 작성을하여 관리하기위해 VTK_Prep.h 파일을 만들었다. 이 파일에는 VTK 초기화 코드와 VTK 사용에 필요한 헤더파일의 include와 빌드 속성에따른 lib 파일의 링크를 추가하였다. 라이브러리 파일은 모든 lib 파일을 추가하였고 Debug또는 Release에따라 로드되도록 하였다.

#pragma once

#include <vtkAutoInit.h>
#define vtkRenderingCore_AUTOINIT 3(vtkRenderingOpenGL2, vtkInteractionStyle, vtkRenderingFreeType)
#define vtkRenderingContext2D_AUTOINIT 1(vtkRenderingContextOpenGL2)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>

#include <vtkConeSource.h>

#include <vtkCamera.h>
#include <vtkLight.h>

#include <vtkPoints.h>
#include <vtkCellArray.h>
#include <vtkPolyData.h>

#ifdef _DEBUG
#pragma comment(lib, "vtkChartsCore-9.0d.lib")
#pragma comment(lib, "vtkCommonColor-9.0d.lib")
#pragma comment(lib, "vtkCommonComputationalGeometry-9.0d.lib")
#pragma comment(lib, "vtkCommonCore-9.0d.lib")
#pragma comment(lib, "vtkCommonDataModel-9.0d.lib")
#pragma comment(lib, "vtkCommonExecutionModel-9.0d.lib")
#pragma comment(lib, "vtkCommonMath-9.0d.lib")
#pragma comment(lib, "vtkCommonMisc-9.0d.lib")
#pragma comment(lib, "vtkCommonSystem-9.0d.lib")
#pragma comment(lib, "vtkCommonTransforms-9.0d.lib")
#pragma comment(lib, "vtkDICOMParser-9.0d.lib")
#pragma comment(lib, "vtkDomainsChemistry-9.0d.lib")
#pragma comment(lib, "vtkdoubleconversion-9.0d.lib")
#pragma comment(lib, "vtkexodusII-9.0d.lib")
#pragma comment(lib, "vtkexpat-9.0d.lib")
#pragma comment(lib, "vtkFiltersAMR-9.0d.lib")
#pragma comment(lib, "vtkFiltersCore-9.0d.lib")
#pragma comment(lib, "vtkFiltersExtraction-9.0d.lib")
#pragma comment(lib, "vtkFiltersFlowPaths-9.0d.lib")
#pragma comment(lib, "vtkFiltersGeneral-9.0d.lib")
#pragma comment(lib, "vtkFiltersGeneric-9.0d.lib")
#pragma comment(lib, "vtkFiltersGeometry-9.0d.lib")
#pragma comment(lib, "vtkFiltersHybrid-9.0d.lib")
#pragma comment(lib, "vtkFiltersHyperTree-9.0d.lib")
#pragma comment(lib, "vtkFiltersImaging-9.0d.lib")
#pragma comment(lib, "vtkFiltersModeling-9.0d.lib")
#pragma comment(lib, "vtkFiltersParallel-9.0d.lib")
#pragma comment(lib, "vtkFiltersParallelImaging-9.0d.lib")
#pragma comment(lib, "vtkFiltersPoints-9.0d.lib")
#pragma comment(lib, "vtkFiltersProgrammable-9.0d.lib")
#pragma comment(lib, "vtkFiltersSelection-9.0d.lib")
#pragma comment(lib, "vtkFiltersSMP-9.0d.lib")
#pragma comment(lib, "vtkFiltersSources-9.0d.lib")
#pragma comment(lib, "vtkFiltersStatistics-9.0d.lib")
#pragma comment(lib, "vtkFiltersTexture-9.0d.lib")
#pragma comment(lib, "vtkFiltersTopology-9.0d.lib")
#pragma comment(lib, "vtkFiltersVerdict-9.0d.lib")
#pragma comment(lib, "vtkfreetype-9.0d.lib")
#pragma comment(lib, "vtkGeovisCore-9.0d.lib")
#pragma comment(lib, "vtkgl2ps-9.0d.lib")
#pragma comment(lib, "vtkglew-9.0d.lib")
#pragma comment(lib, "vtkhdf5-9.0d.lib")
#pragma comment(lib, "vtkhdf5_hl-9.0d.lib")
#pragma comment(lib, "vtkImagingColor-9.0d.lib")
#pragma comment(lib, "vtkImagingCore-9.0d.lib")
#pragma comment(lib, "vtkImagingFourier-9.0d.lib")
#pragma comment(lib, "vtkImagingGeneral-9.0d.lib")
#pragma comment(lib, "vtkImagingHybrid-9.0d.lib")
#pragma comment(lib, "vtkImagingMath-9.0d.lib")
#pragma comment(lib, "vtkImagingMorphological-9.0d.lib")
#pragma comment(lib, "vtkImagingSources-9.0d.lib")
#pragma comment(lib, "vtkImagingStatistics-9.0d.lib")
#pragma comment(lib, "vtkImagingStencil-9.0d.lib")
#pragma comment(lib, "vtkInfovisCore-9.0d.lib")
#pragma comment(lib, "vtkInfovisLayout-9.0d.lib")
#pragma comment(lib, "vtkInteractionImage-9.0d.lib")
#pragma comment(lib, "vtkInteractionStyle-9.0d.lib")
#pragma comment(lib, "vtkInteractionWidgets-9.0d.lib")
#pragma comment(lib, "vtkIOAMR-9.0d.lib")
#pragma comment(lib, "vtkIOAsynchronous-9.0d.lib")
#pragma comment(lib, "vtkIOCityGML-9.0d.lib")
#pragma comment(lib, "vtkIOCore-9.0d.lib")
#pragma comment(lib, "vtkIOEnSight-9.0d.lib")
#pragma comment(lib, "vtkIOExodus-9.0d.lib")
#pragma comment(lib, "vtkIOExport-9.0d.lib")
#pragma comment(lib, "vtkIOExportGL2PS-9.0d.lib")
#pragma comment(lib, "vtkIOExportPDF-9.0d.lib")
#pragma comment(lib, "vtkIOGeometry-9.0d.lib")
#pragma comment(lib, "vtkIOImage-9.0d.lib")
#pragma comment(lib, "vtkIOImport-9.0d.lib")
#pragma comment(lib, "vtkIOInfovis-9.0d.lib")
#pragma comment(lib, "vtkIOLegacy-9.0d.lib")
#pragma comment(lib, "vtkIOLSDyna-9.0d.lib")
#pragma comment(lib, "vtkIOMINC-9.0d.lib")
#pragma comment(lib, "vtkIOMotionFX-9.0d.lib")
#pragma comment(lib, "vtkIOMovie-9.0d.lib")
#pragma comment(lib, "vtkIONetCDF-9.0d.lib")
#pragma comment(lib, "vtkIOOggTheora-9.0d.lib")
#pragma comment(lib, "vtkIOParallel-9.0d.lib")
#pragma comment(lib, "vtkIOParallelXML-9.0d.lib")
#pragma comment(lib, "vtkIOPLY-9.0d.lib")
#pragma comment(lib, "vtkIOSegY-9.0d.lib")
#pragma comment(lib, "vtkIOSQL-9.0d.lib")
#pragma comment(lib, "vtkIOTecplotTable-9.0d.lib")
#pragma comment(lib, "vtkIOVeraOut-9.0d.lib")
#pragma comment(lib, "vtkIOVideo-9.0d.lib")
#pragma comment(lib, "vtkIOXML-9.0d.lib")
#pragma comment(lib, "vtkIOXMLParser-9.0d.lib")
#pragma comment(lib, "vtkjpeg-9.0d.lib")
#pragma comment(lib, "vtkjsoncpp-9.0d.lib")
#pragma comment(lib, "vtklibharu-9.0d.lib")
#pragma comment(lib, "vtklibproj-9.0d.lib")
#pragma comment(lib, "vtklibxml2-9.0d.lib")
#pragma comment(lib, "vtkloguru-9.0d.lib")
#pragma comment(lib, "vtklz4-9.0d.lib")
#pragma comment(lib, "vtklzma-9.0d.lib")
#pragma comment(lib, "vtkmetaio-9.0d.lib")
#pragma comment(lib, "vtknetcdf-9.0d.lib")
#pragma comment(lib, "vtkogg-9.0d.lib")
#pragma comment(lib, "vtkParallelCore-9.0d.lib")
#pragma comment(lib, "vtkParallelDIY-9.0d.lib")
#pragma comment(lib, "vtkpng-9.0d.lib")
#pragma comment(lib, "vtkpugixml-9.0d.lib")
#pragma comment(lib, "vtkRenderingAnnotation-9.0d.lib")
#pragma comment(lib, "vtkRenderingContext2D-9.0d.lib")
#pragma comment(lib, "vtkRenderingCore-9.0d.lib")
#pragma comment(lib, "vtkRenderingFreeType-9.0d.lib")
#pragma comment(lib, "vtkRenderingGL2PSOpenGL2-9.0d.lib")
#pragma comment(lib, "vtkRenderingImage-9.0d.lib")
#pragma comment(lib, "vtkRenderingLabel-9.0d.lib")
#pragma comment(lib, "vtkRenderingLOD-9.0d.lib")
#pragma comment(lib, "vtkRenderingOpenGL2-9.0d.lib")
#pragma comment(lib, "vtkRenderingSceneGraph-9.0d.lib")
#pragma comment(lib, "vtkRenderingUI-9.0d.lib")
#pragma comment(lib, "vtkRenderingVolume-9.0d.lib")
#pragma comment(lib, "vtkRenderingVolumeOpenGL2-9.0d.lib")
#pragma comment(lib, "vtkRenderingVtkJS-9.0d.lib")
#pragma comment(lib, "vtksqlite-9.0d.lib")
#pragma comment(lib, "vtksys-9.0d.lib")
#pragma comment(lib, "vtkTestingRendering-9.0d.lib")
#pragma comment(lib, "vtktheora-9.0d.lib")
#pragma comment(lib, "vtktiff-9.0d.lib")
#pragma comment(lib, "vtkverdict-9.0d.lib")
#pragma comment(lib, "vtkViewsContext2D-9.0d.lib")
#pragma comment(lib, "vtkViewsCore-9.0d.lib")
#pragma comment(lib, "vtkViewsInfovis-9.0d.lib")
#pragma comment(lib, "vtkWrappingTools-9.0d.lib")
#pragma comment(lib, "vtkzlib-9.0d.lib")
#else
#pragma comment(lib, "vtkChartsCore-9.0.lib")
#pragma comment(lib, "vtkCommonColor-9.0.lib")
#pragma comment(lib, "vtkCommonComputationalGeometry-9.0.lib")
#pragma comment(lib, "vtkCommonCore-9.0.lib")
#pragma comment(lib, "vtkCommonDataModel-9.0.lib")
#pragma comment(lib, "vtkCommonExecutionModel-9.0.lib")
#pragma comment(lib, "vtkCommonMath-9.0.lib")
#pragma comment(lib, "vtkCommonMisc-9.0.lib")
#pragma comment(lib, "vtkCommonSystem-9.0.lib")
#pragma comment(lib, "vtkCommonTransforms-9.0.lib")
#pragma comment(lib, "vtkDICOMParser-9.0.lib")
#pragma comment(lib, "vtkDomainsChemistry-9.0.lib")
#pragma comment(lib, "vtkdoubleconversion-9.0.lib")
#pragma comment(lib, "vtkexodusII-9.0.lib")
#pragma comment(lib, "vtkexpat-9.0.lib")
#pragma comment(lib, "vtkFiltersAMR-9.0.lib")
#pragma comment(lib, "vtkFiltersCore-9.0.lib")
#pragma comment(lib, "vtkFiltersExtraction-9.0.lib")
#pragma comment(lib, "vtkFiltersFlowPaths-9.0.lib")
#pragma comment(lib, "vtkFiltersGeneral-9.0.lib")
#pragma comment(lib, "vtkFiltersGeneric-9.0.lib")
#pragma comment(lib, "vtkFiltersGeometry-9.0.lib")
#pragma comment(lib, "vtkFiltersHybrid-9.0.lib")
#pragma comment(lib, "vtkFiltersHyperTree-9.0.lib")
#pragma comment(lib, "vtkFiltersImaging-9.0.lib")
#pragma comment(lib, "vtkFiltersModeling-9.0.lib")
#pragma comment(lib, "vtkFiltersParallel-9.0.lib")
#pragma comment(lib, "vtkFiltersParallelImaging-9.0.lib")
#pragma comment(lib, "vtkFiltersPoints-9.0.lib")
#pragma comment(lib, "vtkFiltersProgrammable-9.0.lib")
#pragma comment(lib, "vtkFiltersSelection-9.0.lib")
#pragma comment(lib, "vtkFiltersSMP-9.0.lib")
#pragma comment(lib, "vtkFiltersSources-9.0.lib")
#pragma comment(lib, "vtkFiltersStatistics-9.0.lib")
#pragma comment(lib, "vtkFiltersTexture-9.0.lib")
#pragma comment(lib, "vtkFiltersTopology-9.0.lib")
#pragma comment(lib, "vtkFiltersVerdict-9.0.lib")
#pragma comment(lib, "vtkfreetype-9.0.lib")
#pragma comment(lib, "vtkGeovisCore-9.0.lib")
#pragma comment(lib, "vtkgl2ps-9.0.lib")
#pragma comment(lib, "vtkglew-9.0.lib")
#pragma comment(lib, "vtkhdf5-9.0.lib")
#pragma comment(lib, "vtkhdf5_hl-9.0.lib")
#pragma comment(lib, "vtkImagingColor-9.0.lib")
#pragma comment(lib, "vtkImagingCore-9.0.lib")
#pragma comment(lib, "vtkImagingFourier-9.0.lib")
#pragma comment(lib, "vtkImagingGeneral-9.0.lib")
#pragma comment(lib, "vtkImagingHybrid-9.0.lib")
#pragma comment(lib, "vtkImagingMath-9.0.lib")
#pragma comment(lib, "vtkImagingMorphological-9.0.lib")
#pragma comment(lib, "vtkImagingSources-9.0.lib")
#pragma comment(lib, "vtkImagingStatistics-9.0.lib")
#pragma comment(lib, "vtkImagingStencil-9.0.lib")
#pragma comment(lib, "vtkInfovisCore-9.0.lib")
#pragma comment(lib, "vtkInfovisLayout-9.0.lib")
#pragma comment(lib, "vtkInteractionImage-9.0.lib")
#pragma comment(lib, "vtkInteractionStyle-9.0.lib")
#pragma comment(lib, "vtkInteractionWidgets-9.0.lib")
#pragma comment(lib, "vtkIOAMR-9.0.lib")
#pragma comment(lib, "vtkIOAsynchronous-9.0.lib")
#pragma comment(lib, "vtkIOCityGML-9.0.lib")
#pragma comment(lib, "vtkIOCore-9.0.lib")
#pragma comment(lib, "vtkIOEnSight-9.0.lib")
#pragma comment(lib, "vtkIOExodus-9.0.lib")
#pragma comment(lib, "vtkIOExport-9.0.lib")
#pragma comment(lib, "vtkIOExportGL2PS-9.0.lib")
#pragma comment(lib, "vtkIOExportPDF-9.0.lib")
#pragma comment(lib, "vtkIOGeometry-9.0.lib")
#pragma comment(lib, "vtkIOImage-9.0.lib")
#pragma comment(lib, "vtkIOImport-9.0.lib")
#pragma comment(lib, "vtkIOInfovis-9.0.lib")
#pragma comment(lib, "vtkIOLegacy-9.0.lib")
#pragma comment(lib, "vtkIOLSDyna-9.0.lib")
#pragma comment(lib, "vtkIOMINC-9.0.lib")
#pragma comment(lib, "vtkIOMotionFX-9.0.lib")
#pragma comment(lib, "vtkIOMovie-9.0.lib")
#pragma comment(lib, "vtkIONetCDF-9.0.lib")
#pragma comment(lib, "vtkIOOggTheora-9.0.lib")
#pragma comment(lib, "vtkIOParallel-9.0.lib")
#pragma comment(lib, "vtkIOParallelXML-9.0.lib")
#pragma comment(lib, "vtkIOPLY-9.0.lib")
#pragma comment(lib, "vtkIOSegY-9.0.lib")
#pragma comment(lib, "vtkIOSQL-9.0.lib")
#pragma comment(lib, "vtkIOTecplotTable-9.0.lib")
#pragma comment(lib, "vtkIOVeraOut-9.0.lib")
#pragma comment(lib, "vtkIOVideo-9.0.lib")
#pragma comment(lib, "vtkIOXML-9.0.lib")
#pragma comment(lib, "vtkIOXMLParser-9.0.lib")
#pragma comment(lib, "vtkjpeg-9.0.lib")
#pragma comment(lib, "vtkjsoncpp-9.0.lib")
#pragma comment(lib, "vtklibharu-9.0.lib")
#pragma comment(lib, "vtklibproj-9.0.lib")
#pragma comment(lib, "vtklibxml2-9.0.lib")
#pragma comment(lib, "vtkloguru-9.0.lib")
#pragma comment(lib, "vtklz4-9.0.lib")
#pragma comment(lib, "vtklzma-9.0.lib")
#pragma comment(lib, "vtkmetaio-9.0.lib")
#pragma comment(lib, "vtknetcdf-9.0.lib")
#pragma comment(lib, "vtkogg-9.0.lib")
#pragma comment(lib, "vtkParallelCore-9.0.lib")
#pragma comment(lib, "vtkParallelDIY-9.0.lib")
#pragma comment(lib, "vtkpng-9.0.lib")
#pragma comment(lib, "vtkpugixml-9.0.lib")
#pragma comment(lib, "vtkRenderingAnnotation-9.0.lib")
#pragma comment(lib, "vtkRenderingContext2D-9.0.lib")
#pragma comment(lib, "vtkRenderingCore-9.0.lib")
#pragma comment(lib, "vtkRenderingFreeType-9.0.lib")
#pragma comment(lib, "vtkRenderingGL2PSOpenGL2-9.0.lib")
#pragma comment(lib, "vtkRenderingImage-9.0.lib")
#pragma comment(lib, "vtkRenderingLabel-9.0.lib")
#pragma comment(lib, "vtkRenderingLOD-9.0.lib")
#pragma comment(lib, "vtkRenderingOpenGL2-9.0.lib")
#pragma comment(lib, "vtkRenderingSceneGraph-9.0.lib")
#pragma comment(lib, "vtkRenderingUI-9.0.lib")
#pragma comment(lib, "vtkRenderingVolume-9.0.lib")
#pragma comment(lib, "vtkRenderingVolumeOpenGL2-9.0.lib")
#pragma comment(lib, "vtkRenderingVtkJS-9.0.lib")
#pragma comment(lib, "vtksqlite-9.0.lib")
#pragma comment(lib, "vtksys-9.0.lib")
#pragma comment(lib, "vtkTestingRendering-9.0.lib")
#pragma comment(lib, "vtktheora-9.0.lib")
#pragma comment(lib, "vtktiff-9.0.lib")
#pragma comment(lib, "vtkverdict-9.0.lib")
#pragma comment(lib, "vtkViewsContext2D-9.0.lib")
#pragma comment(lib, "vtkViewsCore-9.0.lib")
#pragma comment(lib, "vtkViewsInfovis-9.0.lib")
#pragma comment(lib, "vtkWrappingTools-9.0.lib")
#pragma comment(lib, "vtkzlib-9.0.lib")
#endif

이렇게 작성한 Property Sheet 파일은 경로가 수정될 경우 VTK_DIR 매크로만 수정을하면 되며 사용하는 Object가 추가될 경우 VTK_Prep.h 파일만 수정하면 되며 다른 프로젝트에 적용시 이 두 파일을 적용을 하면 된다.


프로젝트 코드 작성

리소스 뷰의 대화상자 리소스에 Picture Control을 올리고 이름을 IDC_STATIC_VTK_FRAME으로 설정하고 속성중 Type를 Owner Draw로 설정한다. 그리고 아래과 같이 코드를 추가하였

// Header 파일
public:
	vtkSmartPointer< vtkRenderWindow >		m_pVTKRenderWnd;
	void initVTKWindow(void* hWnd);
	void resizeVTKWindow();

// Source 파일
void CTestVTKDlg::initVTKWindow(void* hWnd)
{
	if (m_pVTKRenderWnd == nullptr)
	{
		// Interactor 생성
		vtkSmartPointer<vtkRenderWindowInteractor> pInteractor =
			vtkSmartPointer<vtkRenderWindowInteractor>::New();

		// Trackball Camera 인터랙션 스타일 적용
		pInteractor->SetInteractorStyle(
			vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New());

		// Renderer 생성
		vtkSmartPointer<vtkRenderer> pRenderer =
			vtkSmartPointer<vtkRenderer>::New();
		pRenderer->SetBackground(0.0, 0.0, 0.0);

		// RenderWindow 생성 후 Dialog 핸들, Interactor, Renderer 설정
		m_pVTKRenderWnd = vtkSmartPointer<vtkRenderWindow>::New();
		m_pVTKRenderWnd->SetParentId(hWnd);
		m_pVTKRenderWnd->SetInteractor(pInteractor);
		m_pVTKRenderWnd->AddRenderer(pRenderer);
		m_pVTKRenderWnd->Render();
	}
}

void CTestVTKDlg::resizeVTKWindow()
{
	CRect rc;
	GetDlgItem(IDC_STATIC_VTK_FRAME)->GetClientRect(&rc);
	m_pVTKRenderWnd->SetSize(rc.Width(), rc.Height());
}

BOOL CTestVTKDlg::OnInitDialog()
{
	|

	if (GetDlgItem(IDC_STATIC_VTK_FRAME))
	{
		initVTKWindow(GetDlgItem(IDC_STATIC_VTK_FRAME)->GetSafeHwnd());
		resizeVTKWindow();
	}

	return TRUE;  // return TRUE  unless you set the focus to a control
}


프로젝트 실행

이렇게 작성된 프로젝트를 실행하면 dll파일이 없다는 에러 메시지가 출력되는데 프로젝트의 속성에 Debugging 페이지의 Environment 항목에 VTK 빌드 결과물의 bin 폴더를 지정해준다.

Debugging > Environment: PATH=$(VTK_DIR)\bin


설정 후 프로그젝트를 실행하면 대화상자의 Picture Control에 검은색 배경이 보이면 정상적으로 실행이 된 것이다.



Cone 그려보기

대화 상자에 버튼을 올리고 버튼의 이벤트 핸들러에 아래와 같이 코드를 추가한다.

void CTestVTKDlg::OnBnClickedButtonCone()
{
	// Create a cone source
	vtkSmartPointer<vtkConeSource> pConeSource =
		vtkSmartPointer<vtkConeSource>::New();

	// Create a mapper and actor
	vtkSmartPointer<vtkPolyDataMapper> pMapper =
		vtkSmartPointer<vtkPolyDataMapper>::New();
	pMapper->SetInputConnection(pConeSource->GetOutputPort());

	vtkSmartPointer<vtkActor> pActor =
		vtkSmartPointer<vtkActor>::New();
	pActor->SetMapper(pMapper);

	// Visualize
	vtkSmartPointer<vtkRenderer> pRenderer =
		vtkSmartPointer<vtkRenderer>::New();
	pRenderer->AddActor(pActor);
	pRenderer->SetBackground(0.1, 0.2, 0.3);
	pRenderer->ResetCamera();

	// Rendering
	m_pVTKRenderWnd->AddRenderer(pRenderer);
	m_pVTKRenderWnd->Render();
}


추가후 실행하면 아래와같이 각뿔 형태의 콘이 출력된다.


참고한 서적이나 인터넷의 자료에는 프로젝트의 메모리 누수를 방지하기위해서 VTK Dll들을 Delay Load를 설정해야 한다고 하였으나 본인이 테스트한 VTK 9.0.1 과 Visual Studio 2019버전에서의 테스트에서는 Delay Load를 설정하지 않아도 메모리 누수가 발생하지 않았다.


참고 자료

VTK 프로그래밍 - 일진사

https://luckygg.tistory.com/130




Posted by NeoDreamer
:
BLOG main image
사람의 발목을 잡는건 '절망'이 아니라 '체념'이고 앞으로 나아가게 하는건 '희망'이 아니라 '의지'다. - 암스 중에서 - by NeoDreamer

공지사항

카테고리

전체보기 (793)
Life Story (1)
Thinking (2)
Nothing (5)
---------------* (0)
Dev Story (701)
Com. Story (80)
IT Story (1)
---------------+ (0)
Etc (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :
04-24 00:08