#ifndef NMVOLUMEDATARENDERADAPTER_H #define NMVOLUMEDATARENDERADAPTER_H #include "nmVolumeData.h" class vtkAlgorithmOutput; class vtkTrivialProducer; /** @brief 将只读数据接入渲染管线;独占容器、共享冻结数组,不执行几何变换。 */ class NM_DATA_EXPORT nmVolumeDataRenderAdapter { public: /** @brief 保持数据强引用并建立独立渲染容器;空数据对应空输出端口。 */ explicit nmVolumeDataRenderAdapter(const QSharedPointer& pData); /** @brief 先断开输出,再释放适配器持有的数据和 VTK 引用。 */ ~nmVolumeDataRenderAdapter(); /** @brief 返回非所有权输出端口;下游不得经此反查并修改共享数组。 */ vtkAlgorithmOutput* getOutputPort() const; private: Q_DISABLE_COPY(nmVolumeDataRenderAdapter) QSharedPointer m_pData; ///< 保证共享数组存活的只读数据强引用。 vtkSmartPointer m_pGrid; ///< 独立容器,几何和属性引用已冻结数据。 vtkSmartPointer m_pProducer; ///< 适配器独占的 VTK 管线入口。 }; #endif // NMVOLUMEDATARENDERADAPTER_H