Hi:
 
I have an Immediate Mode application that lets a user walk around a scene by using the keyboard. My scene consists of a cube that is composed of 6 TriangleArrays, one for each side of the cube. Each side of the cube has a different appearance.
 
When the user is still, the cube renders perfectly. However, when the user starts to move the geometry begins to tear. Gaps appear between each of the cubes faces. These gaps grow and shrink as the user is moving. As soon as the user stops the gaps disappear and the cube renders fine.
 
It looks to me that even though I am drawing all 6 faces between a single GraphicsContext3D.clear() and Canvas3D.swap() pair that in fact not all of the faces are being drawn during one frame. So what I think is happening is that some of the faces are being drawn with one viewing transform and then the transform is updated and then the other faces are draw. Perhaps this is a threading bug, or perhaps OpenGL flush() is being called inappropriately?
 
I am updating the model transform using SimpleUniverse.getViewingPlatform().getViewPlatformTransform(). If I switch to using the standard ColorCube then this cube renders fine even while moving, but I believe it consists of only a single GeometryArray, not multiple arrays and appearances like my application.
 
Has any else noticed this problem?
 
- John
 
I am using Java3D beta 2 Open GL under Windows 200 with a GeForce based card.
 
 

Reply via email to