If your actor has been translated/scaled/rotated, you’ll need to fetch it’s model-to-world transformation matrix and multiply that with the world-to-display transform in order to get the correct model-to-display matrix.
Thank you very much for your reply. In my program, I did not transform the Actor. However, when I used RenderDoc to capture the rendering call of VTk, I found that the data passed into the vertex shader was different from the data I read. Did it perform any other operations internally
It could be possible that the mapper shifted and scaled your coordinates to prevent precision issues in shaders. You can disable that with vtkOpenGLVertexBufferObject::SetGlobalCoordShiftAndScaleEnabled(false) and check the vertexMC values again to confirm the shift scale is causing it.
When a shift scale is applied, the mapper pre-multiplies an internal 4x4 matrix called VBOShiftScale on the mcwc