You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/nmNum/nmData/nmVolumeDataRenderAdapter.h

27 lines
1.2 KiB
C

#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<const nmVolumeData>& pData);
/** @brief 先断开输出,再释放适配器持有的数据和 VTK 引用。 */
~nmVolumeDataRenderAdapter();
/** @brief 返回非所有权输出端口;下游不得经此反查并修改共享数组。 */
vtkAlgorithmOutput* getOutputPort() const;
private:
Q_DISABLE_COPY(nmVolumeDataRenderAdapter)
QSharedPointer<const nmVolumeData> m_pData; ///< 保证共享数组存活的只读数据强引用。
vtkSmartPointer<vtkUnstructuredGrid> m_pGrid; ///< 独立容器,几何和属性引用已冻结数据。
vtkSmartPointer<vtkTrivialProducer> m_pProducer; ///< 适配器独占的 VTK 管线入口。
};
#endif // NMVOLUMEDATARENDERADAPTER_H