PDA

View Full Version : Rendering of Complex Shapes



12-04-2000, 09:26 AM
I got a new user question that I can't seem to find answers to. I created a complex shape using the following code:

glBegin(GL_POLYGON); // Drawing Using Triangles
glColor3f(1.0f,0.0f,0.0f);
glVertex3f( -2.0f,-2.0f, 0.0f); //
glVertex3f( 2.0f,-2.0f, 0.0f); //
glVertex3f( 2.0f,2.0f, 0.0f); //
glVertex3f( 1.0f,3.0f, 0.0f); //
glVertex3f( -1.0f,3.0f, 0.0f); //
glVertex3f( -2.0f,2.0f, 0.0f); //
glEnd();

Then I used many other Polygons and quads to make this into a 3D object. My question is, how do I make it so the sides of this object that are not in the field of view of the camera don't show up? Right now, it is a very complex picture, that is hard to understand what is going on, because the backside of the 3D object show up just like the front. But when I use the glutSolidCube(3.0f) command, it looks like it should, but the cube is not the shape that I need. Is there some sort of trick with lighting that I can use? Thanks for any help, Newbie

MikeC
12-04-2000, 09:32 AM
If your model is convex, enabling culling should do the trick:

glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );

If it isn't convex, you'll need to enable depth buffering.

12-04-2000, 10:15 AM
I am not sure what you mean by if my model is convex. I inserted the lines that you listed above and nothing changed. Does convex pertain to which direction I drew my vertexes? Either clockwise or counterclockwise? For I drew everything in a counterclockwise direction. Thanks for the help. Newbie

DFrey
12-04-2000, 01:19 PM
Sounds like you have not enabled depth testing.

Michael Steinberg
12-04-2000, 01:26 PM
Did you define all polys counter clockwise?
Depth-test shouldn't have anything to do with backface culling I think.

MikeC
12-04-2000, 01:43 PM
Depth-test IS relevant if the model isn't convex, i.e. if some front-facing polys should appear behind other front-facing polys. Culling on its own isn't enough here.

12-05-2000, 05:44 AM
In my program I enable depth testing by the following code:

glEnable (GL_DEPTH_TEST);

And when I do this, the screen stays totally black. But when I comment it out, my complex shape and my cylinder both appear. Do I need to do something else besides the enable to make this work? I also have Lighting, Lighto and Cull_Face enabled.

May I ask what a convex shape is though? Does it have to do with the counterclockwise means of defining my shapes? And what is the difference between Cull_Face and Depth_Test?

Thanks,
Newbie

Eric
12-05-2000, 05:52 AM
Can you e-mail your code ?

My e-mail address is available when clicking on the question mark near the "posted 12-5-2000...".

It seems really strange that we cannot find the solution to this (usually) simple problem.

Regards.

Eric