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.
27 lines
1.2 KiB
C++
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
|