在VTK中使用Opengl代码
来源:互联网 发布:linux finger不存在 编辑:程序博客网 时间:2024/06/08 04:26
vtk内部是基于opengl来绘制图形的,所以opengl代码可以在vtk程序中使用。
下面简单介绍一下如何在在VTK中使用Opengl代码
在vtkProp类中有四个绘制图形的函数分别如下:
virtual int RenderOpaqueGeometry(vtkViewport *) { return 0; }
virtual int RenderTranslucentPolygonalGeometry( vtkViewport *) { return 0; }
virtual int RenderVolumetricGeometry( vtkViewport *) { return 0; }
virtual int RenderOverlay( vtkViewport *) { return 0; }
这四个函数在vtk内部程序中按照固定顺序执行。
方法就是
写一个 vtkMyDerivedVtkProp 类 由 vtkProp派生。然后可以重载以上任意成员函数,在成员函数中你可以写任意的opengl相关代码。注意:重载不同的成员函数,也许最后的绘制效果不同。因为两个物体中,若一个用vtk的函数绘制,另一个用派生的类成员函数绘制,那么重载不同的成员函数,则造成绘制两个物体的顺序不同。这就影响最后的结果。
vtkMyDerivedProp.h
class vtkMyDerivedProp : public vtkProp{public:vtkTypeRevisionMacro(vtkMyDerivedProp,vtkProp);void PrintSelf(ostream& os, vtkIndent indent);static vtkMyDerivedProp* New();int RenderVolumetricGeometry(vtkViewport *); vtkCloud * pCloud;vtkCamera * RtCamera;protected:vtkMyDerivedProp();~vtkMyDerivedProp();private:vtkMyDerivedProp(const vtkMyDerivedProp&); // Not implemented. void operator=(const vtkMyDerivedProp&); // Not implemented. };
vtkMyDerivedProp.cpp
#include "c:\vtk\vc\include\vtk-5.2\vtkViewPort.h"#include "c:\vtk\vc\include\vtk-5.2\vtkObjectFactory.h"#include "vtkMyDerivedProp.h"vtkCxxRevisionMacro(vtkMyDerivedProp, "$Revision: 1.36 $");vtkStandardNewMacro(vtkMyDerivedProp);vtkMyDerivedProp::vtkMyDerivedProp(){}vtkMyDerivedProp::~vtkMyDerivedProp(){}void vtkMyDerivedProp::PrintSelf(ostream& os, vtkIndent indent){this->Superclass::PrintSelf(os,indent);}int vtkMyDerivedProp::RenderVolumetricGeometry(vtkViewport * ){ // OpenGl代码 glBegin(GL_QUADS); glColor3f(1.0,0.0,0.0); glVertex3f(-2.0,-2.0,10.0); glVertex3f(2.0,-2.0,10.0); glVertex3f(2.0,2.0,10.0); glVertex3f(-2.0,2.0,10.0); glEnd(); return 1;}
在主函数加入
vtkMyDerivedProp *derivedprop ;derivedprop = vtkMyDerivedProp::New();renderer->AddViewProp(derivedprop);
- 在VTK中使用Opengl代码
- 在wxPython中使用VTK
- 在OPENGL中使用光照
- 在JAVA中使用OpenGL?!
- 在wxPython中使用OpenGL
- 在SDL中使用OpenGL
- 在VC中使用OpenGL
- 在OpenGL中使用GLSL
- 在CodeBlocks中使用openGL
- 在Qt4中使用OpenGL
- 在Win32中使用OpenGL
- 在 Android 中使用 OpenGL
- 在OSG中嵌入OpenGL代码
- 在VS中配置VTK
- 在PySide中嵌入VTK
- vtk在Java2中的使用
- [Modern OpenGL系列(四)]在OpenGL中使用Shader
- 【OpenGL】(二)在OpenGL中使用GLSL
- [C++STDlib基础]关于单字符的操作——C++标准库头文件<cctype>
- Android HTTP实例 使用GET方法和POST方法发送请求
- nhibernate中 领域驱动设计/开发(DDD,Domain Driven Design/Development)
- 插入排序算法浅谈
- 图像处理--概念
- 在VTK中使用Opengl代码
- 字符串的左旋转
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- 网桥的原理与作用 .
- JSP详解
- Ubuntu Android GCC 版本配置
- Android通过LIstView显示文件列表
- HDU3785-寻找大富翁
- 经典C、C++、MFC、VC++教程,都是pdf完整版的