# Thread: Shoe carton face problem

1. ## Shoe carton face problem

Hello guys,
I'm new to openGL, so don't hit me.
I'm trying to draw a shoe carton where i want to put in things like cubes.

I'm drawing it with simple vertices, but when I rotate my view, it behaves weird.

You might understand my problem better with some stuff for your eyes:

1. So this is the box. Its simple: 5 faces, 20 vertices, 5 colours. It looks quite how I want - from that perspective.
2. So let's move a bit around - oh no, what is this? We just moved some steps right and suddenly the red face (back side) is drawn over the green face (right side)! It's an impossible model now!
3. Back to our origin position from picture 1, we moved some steps down the y-axis, but what is that? The box's floor is now a cover!

And this is the code, producing this weird stuff
Code :
```#define UPDATE_INTERVAL 16
float rotX = 0;
float rotY = 0;

void Box(GLfloat fSeitenL)
{
float alpha = 1.0f;
float xLeft = -fSeitenL / 2.0f;
float xRight = fSeitenL / 2.0f;
float yBottom = -fSeitenL / 2.0f;
float yTop = fSeitenL / 2.0f;
float zBack = -fSeitenL / 2.0f;
float zFront = fSeitenL / 2.0f;

// Floor
glColor4f(1.0, 1.0, 1.0, alpha);
glBegin(GL_POLYGON);
glVertex3f(xLeft, yBottom, zBack);
glVertex3f(xRight, yBottom, zBack);
glVertex3f(xRight, yBottom, zFront);
glVertex3f(xLeft, yBottom, zFront);
glEnd();

// Quarter Height
yTop = -fSeitenL / 4.0;

// Right side
glBegin(GL_POLYGON);
glColor4f(0.0, 1.0, 0.0, alpha);
glVertex3f(xRight, yBottom, zFront);
glVertex3f(xRight, yBottom, zBack);
glVertex3f(xRight, yTop, zBack);
glVertex3f(xRight, yTop, zFront);
glEnd();

// back side
glBegin(GL_POLYGON);
glColor4f(1.0, 0.0, 0.0, alpha);
glVertex3f(xRight, yTop, zBack);
glVertex3f(xRight, yBottom, zBack);
glVertex3f(xLeft, yBottom, zBack);
glVertex3f(xLeft, yTop, zBack);
glEnd();

// left side
glBegin(GL_POLYGON);
glColor4f(0.0, 0.0, 1.0, alpha);
glVertex3f(xLeft, yTop, zBack);
glVertex3f(xLeft, yBottom, zBack);
glVertex3f(xLeft, yBottom, zFront);
glVertex3f(xLeft, yTop, zFront);
glEnd();

// front side
glBegin(GL_POLYGON);
glColor4f(1.0, 1.0, 0, alpha);
glVertex3f(xLeft, yBottom, zFront);
glVertex3f(xRight, yBottom, zFront);
glVertex3f(xRight, yTop, zFront);
glVertex3f(xLeft, yTop, zFront);
glEnd();
}

void OnDraw(){
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
gluPerspective(40.0, 640 / 480, 1.0, 16.0);
glMatrixMode(GL_MODELVIEW);
gluLookAt(rotX, rotY, 2.0,
0.0, 0.0, 0.0,
0.0, 1.0, 0.0);
Box(1);
glutSwapBuffers();
}

void OnUpdate(int value){
glutPostRedisplay();
glutTimerFunc(UPDATE_INTERVAL, OnUpdate, 0);
}

int _tmain(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode( GL_DEPTH_BUFFER_BIT | GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
glutCreateWindow(WINDOW_TITLE);
glutDisplayFunc(OnDraw);
glutTimerFunc(UPDATE_INTERVAL, OnUpdate, 0);
glutMainLoop();
return EXIT_SUCCESS;
}```

So what is the problem and how can I solve it?

2. Add glEnable(GL_DEPTH_TEST) somewhere in the initialization code (some PrepareScene() function), or in OnDraw() for the first help.

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•