2.2三维场景的基本要素(纹理映射)-Mayer0910窗外有男天
2.2三维场景的基本要素(2)——纹理映射
****************************************
1、在文件夹Chap02下新建2.2_TextureExample.cpp:
修改CMakeLists.txt内容如下:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(Chap02)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(2.2_TextureExample 2.2_TextureExample.cpp)
TARGET_LINK_LIBRARIES(2.2_TextureExample ${VTK_LIBRARIES})
在2.2_TextureExample.cpp输入以下内容:
#include <vtkSmartPointer.h>
#include <vtkJPEGReader.h>
#include <vtkTexture.h>
#include <vtkPlaneSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
//测试文件:E:\lena.jpg
int main (int argc梁耀艺 , char* argv[])
{
vtkSmartPointer< vtkJPEGReader > reader = vtkSmartPointer< vtkJPEGReader >::New();
//reader->SetFileName(argv[1]);
reader->SetFileName("E:\lena.jpg");
vtkSmartPointer< vtkTexture > texture = vtkSmartPointer< vtkTexture >::New();
texture->SetInputConnection( reader->GetOutputPort() );
texture->InterpolateOn();
vtkSmartPointer< vtkPlaneSource > plane = vtkSmartPointer< vtkPlaneSource >::New();
vtkSmartPointer< vtkPolyDataMapper > mapper = vtkSmartPointer< vtkPolyDataMapper >::New();
mapper->SetInputConnection( plane->GetOutputPort() );
vtkSmartPointer< vtkActor > actor = vtkSmartPointer< vtkActor >::New();
actor->SetMapper( mapper );
actor->SetTexture( texture );
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor( actor );
renderer->SetBackground( 1.0绿森数码, 1.0李丽凤, 1.0);
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer( renderer );
renWin->SetSize( 640天霜河白 ,姜桂成 480 );
renWin->Render();
renWin->SetWindowName("TextureExample");
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
iren->Initialize();
iren->Start();
return EXIT_SUCCESS;
}
2、在CMake中Configure和Generate:
3、在Visual Studio2017中打开.sln地海传说,生成解决方案灰伯劳,开始执行(不调试)拨号精灵 ,结果如下:
2.2三维场景的基本要素(2)——纹理映射
****************************************
1、在文件夹Chap02下新建2.2_TextureExample.cpp:
修改CMakeLists.txt内容如下:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(Chap02)
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(2.2_TextureExample 2.2_TextureExample.cpp)
TARGET_LINK_LIBRARIES(2.2_TextureExample ${VTK_LIBRARIES})
在2.2_TextureExample.cpp输入以下内容:
#include <vtkSmartPointer.h>
#include <vtkJPEGReader.h>
#include <vtkTexture.h>
#include <vtkPlaneSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
//测试文件:E:\lena.jpg
int main (int argc梁耀艺 , char* argv[])
{
vtkSmartPointer< vtkJPEGReader > reader = vtkSmartPointer< vtkJPEGReader >::New();
//reader->SetFileName(argv[1]);
reader->SetFileName("E:\lena.jpg");
vtkSmartPointer< vtkTexture > texture = vtkSmartPointer< vtkTexture >::New();
texture->SetInputConnection( reader->GetOutputPort() );
texture->InterpolateOn();
vtkSmartPointer< vtkPlaneSource > plane = vtkSmartPointer< vtkPlaneSource >::New();
vtkSmartPointer< vtkPolyDataMapper > mapper = vtkSmartPointer< vtkPolyDataMapper >::New();
mapper->SetInputConnection( plane->GetOutputPort() );
vtkSmartPointer< vtkActor > actor = vtkSmartPointer< vtkActor >::New();
actor->SetMapper( mapper );
actor->SetTexture( texture );
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor( actor );
renderer->SetBackground( 1.0绿森数码, 1.0李丽凤, 1.0);
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer( renderer );
renWin->SetSize( 640天霜河白 ,姜桂成 480 );
renWin->Render();
renWin->SetWindowName("TextureExample");
vtkSmartPointer<vtkRenderWindowInteractor> iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
iren->Initialize();
iren->Start();
return EXIT_SUCCESS;
}
2、在CMake中Configure和Generate:
3、在Visual Studio2017中打开.sln地海传说,生成解决方案灰伯劳,开始执行(不调试)拨号精灵 ,结果如下: