#pragma once
#define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2)
#include <QWidget>
#include <QTimer>
#include <QDebug>
#include <QPushButton>
#include <QResizeEvent>
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkPolyData.h"
#include "vtkOBJReader.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkPolyDataMapper.h"
#include "vtkRendererCollection.h"
#include "vtkInteractorStyleTerrain.h"
class vtkWidget :public QWidget
{
Q_OBJECT
public:
vtkWidget(QWidget* parent = nullptr);
~vtkWidget();
void resizeEvent(QResizeEvent* event) override;
vtkRenderer* m_pRender = nullptr;
vtkRenderWindow* m_pRenderWnd = nullptr;
};
#include "vtkWidget.h"
vtkWidget::vtkWidget(QWidget* parent) :QWidget(parent)
{
m_pRender = vtkRenderer::New();
m_pRenderWnd = vtkRenderWindow::New();
m_pRenderWnd->AddRenderer(m_pRender);
m_pRenderWnd->SetParentId((HWND)this->winId());
auto m_pRenderWndInter = vtkRenderWindowInteractor::New();
m_pRenderWndInter->SetRenderWindow(m_pRenderWnd);
auto m_pInteractor = vtkInteractorStyleTerrain::New();
m_pRenderWndInter->SetInteractorStyle(m_pInteractor);
auto m_pObjReader = vtkOBJReader::New();
m_pObjReader->SetFileName("D:/Extra_Pro/bunny.obj");
m_pObjReader->Update();
auto m_pMapper = vtkPolyDataMapper::New();
m_pMapper->SetInputConnection(m_pObjReader->GetOutputPort());
auto m_pActor = vtkActor::New();
m_pActor->SetMapper(m_pMapper);
m_pRender->AddActor(m_pActor);
m_pRenderWnd->Render():
}
vtkWidget::~vtkWidget()
{
}
void vtkWidget::resizeEvent(QResizeEvent* event)
{
QWidget::resizeEvent(event);
m_pRenderWnd->SetSize(event->size().width(), event->size().height());
}