[vtk-developers] Rendering of vtkPolyData broken on Nvidia systems
Aashish Chaudhary
aashish.chaudhary at kitware.com
Fri Jun 22 10:05:38 EDT 2012
Hi Oleg,
Can you try to run apitrace (https://github.com/apitrace/apitrace) or
gDebugger (http://www.gremedy.com) on your program and post your logs
somewhere so that we access it?
Thanks,
On Fri, Jun 22, 2012 at 9:00 AM, Oleg Koren <koren at curefab.com> wrote:
> Looks like VTK cannot render vtkPolyData correctly when Nvidia driver of
> version 295.73 or above is installed. If more than one actor is defined, all
> but the first one are rendered black.
>
> Image 1: correct rendering -
> http://image-upload.de/image/YsvZ2O/a7a73bbf38.png
> Image 2: wrong rendering -
> http://image-upload.de/image/2f28ij/b9c5ffb4d5.png
>
> The problem can be reliably reproduced:
>
> 1) Install Nvidia driver 295.73 or above (e.g. from CUDA 4.2
> http://developer.nvidia.com/cuda-downloads)
> 2) Compile and run the code snippet (s. further down)
>
> Some more information:
>
> 1) Hardware is not the issue. Confirmed on GeForce GTX 460, 550 Ti, 560 Ti,
> 580 and 680.
> 2) Driver 286.19 and below works ok.
> 3) Seems to depend on the number and ordering of actors. Replacing
> mapper_1->Modified(); with mapper->Modified(); gives correct results.
> 4) Direct rendering with OpenGL works ok, which is strongly suggesting a bug
> of VTK.
>
> I would consider this problem a major issue, as it currently doesn't allow
> to use VTK on a modern Nvidia system. Happy to offer my help with testing
> and fixing it.
>
> Probably similar to:
> http://vtk.1045678.n5.nabble.com/nVidia-driver-problems-td4739635.html
>
>
> int main(int argc, char** argv[]) {
>
> vtkRenderer* renderer = vtkRenderer::New();
> vtkRenderWindow* renderWindow = vtkRenderWindow::New();
> renderWindow->AddRenderer(renderer);
>
> double origin[3] = {0.0, 0.0, 0.0};
> double point0[3] = {1.0, 0.0, 0.0};
> double point1[3] = {1.0, 1.0, 0.0};
> double point2[3] = {0.0, 1.0, 0.0};
> double point3[3] = {0.0, 0.0, 0.0};
>
> double origin_1[3] = {0.0, 0.0, 0.0};
> double point0_1[3] = {0.0, 1.0, 0.0};
> double point1_1[3] = {-1.0, 1.0, 0.0};
> double point2_1[3] = {-1.0, 0.0, 0.0};
> double point3_1[3] = {0.0, 0.0, 0.0};
>
> vtkPoints* points = vtkPoints::New();
> points->InsertNextPoint(origin);
> points->InsertNextPoint(point0);
> points->InsertNextPoint(point1);
> points->InsertNextPoint(point2);
> points->InsertNextPoint(point3);
>
> vtkPoints* points_1 = vtkPoints::New();
> points_1->InsertNextPoint(origin_1);
> points_1->InsertNextPoint(point0_1);
> points_1->InsertNextPoint(point1_1);
> points_1->InsertNextPoint(point2_1);
> points_1->InsertNextPoint(point3_1);
>
> vtkPolyLine* line = vtkPolyLine::New();
> line->GetPointIds()->SetNumberOfIds(5);
>
> vtkPolyLine* line_1 = vtkPolyLine::New();
> line_1->GetPointIds()->SetNumberOfIds(5);
>
> for(unsigned int i = 0; i< 5; i++) {
> line->GetPointIds()->SetId(i, i);
> line_1->GetPointIds()->SetId(i, i);
> }
>
> vtkCellArray* cellArray = vtkCellArray::New();
> cellArray->InsertNextCell(line);
>
> vtkCellArray* cellArray_1 = vtkCellArray::New();
> cellArray_1->InsertNextCell(line_1);
>
> vtkPolyData* polyData = vtkPolyData::New();
> polyData->SetPoints(points);
> polyData->SetLines(cellArray);
>
> vtkPolyData* polyData_1 = vtkPolyData::New();
> polyData_1->SetPoints(points_1);
> polyData_1->SetLines(cellArray_1);
>
> vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
> mapper->SetInput(polyData);
>
> vtkActor* actor = vtkActor::New();
> actor->SetMapper(mapper);
> actor->GetProperty()->SetColor(255,0,0);
>
> vtkPolyDataMapper* mapper_1 = vtkPolyDataMapper::New();
> mapper_1->SetInput(polyData_1);
>
> vtkActor* actor_1 = vtkActor::New();
> actor_1->SetMapper(mapper_1);
> actor_1->GetProperty()->SetColor(255,255,0);
>
> renderer->AddActor(actor);
> renderer->AddActor(actor_1);
>
> while(true) {
> mapper_1->Modified();
> renderWindow->Render();
> }
>
> return 0;
> }
>
>
> --
> View this message in context: http://vtk.1045678.n5.nabble.com/Rendering-of-vtkPolyData-broken-on-Nvidia-systems-tp5714114.html
> Sent from the VTK - Dev mailing list archive at Nabble.com.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtk-developers
>
--
| Aashish Chaudhary
| R&D Engineer
| Kitware Inc.
| www.kitware.com
More information about the vtk-developers
mailing list