I’m an ultra-begginner when it comes to programming in OpenGL. I’m taking a summer Graphics class and so far we’ve learned how to make a cube 1 unit long centered at 0,0,0 and mess with the camera angles and all that. The first major project is to do the front part of a house (a door and a window… no roof yet). I’ve obviously gotten it to run with just the “cube” house, but when I try to put the door on there it doesn’t work. Havn’t even tried a window yet.
I’ll try looking for example model house files to compare with, but if anyone can figure out what I’m doing wrong any help would be appreciated.
#include <stdlib.h>
#ifdef __APPLE_
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
typedef float vertex[3];
vertex vertices[]={
{-0.5, -0.5, 0.5},//0 (first 8 verticies for cube)
{-0.5, 0.5, 0.5},//1
{0.5, 0.5, 0.5},//2
{0.5, -0.5, 0.5},//3
{-0.5, -0.5, -0.5},//4
{-0.5, 0.5, -0.5},//5
{0.5, 0.5, -0.5},//6
{0.5, -0.5, -0.5},//7
{-3/28, -13/28, 0.5},//8 (start door) bottom left
{3/28, -13/28, 0.5},//9 bottom right
{3/28, 0, 0.5},//10 top right
{-3/28,0, 0.5}}//11 top left
;
static GLfloat theta[] = {0.0,0.0,0.0};
void face( int a, int b, int c, int d)
{
glBegin(GL_POLYGON);
glNormal3fv(vertices[a]);
glVertex3fv(vertices[a]);
glVertex3fv(vertices[b]);
glVertex3fv(vertices[c]);
glVertex3fv(vertices[d]);
glEnd();
}
void MYcube()
{
glColor3f(1.0,0.0,0.0); //red),
face(0,3,2,1);
glColor3f(0.0,1.0,0.0); //green),
face(4,5,6,7);
glColor3f(0.0,0.75388,1.0); //blue),
face(5,1,2,6);
glColor3f(1.0,0.2,0.7); //deep pink),
face(4,7,3,0);
glColor3f(1.0,1.0,0.0); // yellow),
face(2,3,7,6);
glColor3f(1.0,0.75,0.0); // orange).
face(5,4,0,1);
glColor3f(0.0,0.0,0.0); //red),
face(8,9,10,11);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(0.0 ,0.0 ,1.0,
0.0 ,0.0 ,0.0,
0.0 ,1.0 ,0.0);
MYcube();
glFlush();
}
void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w <= h)
glOrtho(-1.0, 1.0, -1.0 * (GLfloat) h / (GLfloat) w,
1.0 * (GLfloat) h / (GLfloat) w, -5.0, 5.0);
else
glOrtho(-2.0 * (GLfloat) w / (GLfloat) h,
2.0 * (GLfloat) w / (GLfloat) h, -2.0, 2.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
glutPostRedisplay();
}
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutCreateWindow("Chambers House");
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glEnable(GL_DEPTH_TEST);
glClearColor (1.0, 1.0, 1.0, 1.0);
glutMainLoop();
}
When I build this I just see the red face of the front, even though I added 4 more vertices and made a face with a different color than the front. I’m sure it’s some beginner’s mistake I’m making.