예제 #1
0
/*!
* Create camera and light icons
*/
static void
create_icons() {
	GLUquadricObj *qobj;
	
	
#define CBX .25 // camera body dimensions
#define CBY 1.5
#define CBZ 1.
	
	
	qobj = gluNewQuadric();
	gluQuadricDrawStyle(qobj, GLU_FILL);
	gluQuadricNormals(qobj, GLU_SMOOTH);
	
	
	cameraList = glGenLists(1);
	glNewList(cameraList, GL_COMPILE);
	glMaterialfv(GL_FRONT, GL_AMBIENT, dgrey);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, lgrey);
	glMaterialfv(GL_FRONT, GL_SPECULAR, black);
	glEnable(GL_CULL_FACE);
	solidBox(CBX, CBY, CBZ);
	glPushMatrix();
	glTranslatef(0., .9, 1.8);
	glRotatef(90., 0., 1., 0.);
	solidCylinder(1., CBX*2, 12);
	glTranslatef(0., -1.8, 0.);
	solidCylinder(1., CBX*2, 12);
	glPopMatrix();
	glDisable(GL_CULL_FACE);
	glPushMatrix();
	glTranslated(0., CBY, 0.);
	glRotated(-90., 1., 0., 0.);
	gluCylinder(qobj, .2, .5, 1., 12, 1);
	glPopMatrix();
	glEndList();
	
	
	lightList = glGenLists(1);
	glNewList(lightList, GL_COMPILE);
	glPushMatrix();
	glMaterialfv(GL_FRONT, GL_AMBIENT, dgrey);
	glMaterialfv(GL_FRONT, GL_DIFFUSE, dgrey);
	glMaterialfv(GL_FRONT, GL_SPECULAR, grey);
	glEnable(GL_CULL_FACE);
	gluSphere(qobj, .5, 12., 6.);
	glRotated(180., 1., 0., 0.);
	glMaterialfv(GL_FRONT, GL_EMISSION, dgrey);
	gluCylinder(qobj, .2, .2, 1., 12, 1);
	glPopMatrix();
	glEndList();
}
예제 #2
0
파일: main.cpp 프로젝트: hroncok/OpenCSG
void setWidget() {
    
    clearPrimitives();

    GLuint id1 = glGenLists(1);
    glNewList(id1, GL_COMPILE);
    glutSolidSphere(1.2, 20, 20);
    glEndList();

    GLuint id2 = glGenLists(1);
    glNewList(id2, GL_COMPILE);
    glutSolidCube(1.8);
    glEndList();

    GLuint id3 = glGenLists(1);
    glNewList(id3, GL_COMPILE);
    glPushMatrix();
    glTranslatef(0.0f, 0.0f, -1.25f);
    solidCylinder(0.6, 2.5, 20, 20);
    glPopMatrix();
    glEndList();

    GLuint id4 = glGenLists(1);
    glNewList(id4, GL_COMPILE);
    glPushMatrix();
    glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
    glTranslatef(0.0f, 0.0f, -1.25f);
    solidCylinder(0.6, 2.5, 20, 20);
    glPopMatrix();
    glEndList();

    GLuint id5 = glGenLists(1);
    glNewList(id5, GL_COMPILE);
    glPushMatrix();
    glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
    glTranslatef(0.0f, 0.0f, -1.25f);
    solidCylinder(0.6, 2.5, 20, 20);
    glPopMatrix();
    glEndList();

    primitives.push_back(new OpenCSG::DisplayListPrimitive(id1, OpenCSG::Intersection, 1));
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id2, OpenCSG::Intersection, 1));
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id3, OpenCSG::Subtraction, 1));
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id4, OpenCSG::Subtraction, 1));
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id5, OpenCSG::Subtraction, 1));
}
예제 #3
0
파일: main.cpp 프로젝트: hroncok/OpenCSG
void setConcave() {
    
    clearPrimitives();

    GLuint id1 = glGenLists(1);
    glNewList(id1, GL_COMPILE);
    glutSolidTorus(0.6, 1.0, 25, 25);
    glEndList();
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id1, OpenCSG::Intersection, 2));

    for (unsigned int i=0; i<4; ++i) {
        GLuint id = glGenLists(1);
        glNewList(id, GL_COMPILE);
        glPushMatrix();
        glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
        glRotatef(i*90.0f + 45.0f, 1.0f, 0.0f, 0.0f);
        glTranslatef(0.0f, 1.0f, 0.0f);
        glutSolidTorus(0.3, 0.6, 15, 15);
        glPopMatrix();
        glEndList();
        primitives.push_back(new OpenCSG::DisplayListPrimitive(id, OpenCSG::Subtraction, 2));
    }

    GLuint id3 = glGenLists(1);
    glNewList(id3, GL_COMPILE);
    glPushMatrix();
    glRotatef(90.0f, 0.0f, 1.0f, 0.0f);
    glTranslatef(0.0f, 0.0f, -1.65f);
    solidCylinder(0.3, 3.3, 20, 20);
    glPopMatrix();
    glEndList();
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id3, OpenCSG::Subtraction, 1));

    GLuint id4 = glGenLists(1);
    glNewList(id4, GL_COMPILE);
    glPushMatrix();
    glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
    glTranslatef(0.0f, 0.0f, -1.65f);
    solidCylinder(0.3, 3.3, 20, 20);
    glPopMatrix();
    glEndList();
    primitives.push_back(new OpenCSG::DisplayListPrimitive(id4, OpenCSG::Subtraction, 1));
}