void DrawHandler::draw(){
	glEnable(GL_TEXTURE_2D);
	glShadeModel(GL_SMOOTH);		 // Enables Smooth Shading
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
	glDepthFunc(GL_LEQUAL);			// The Type Of Depth Test To Do
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	// Really Nice Perspective Calculation

	//set up lighting
	setUpLighting();


	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();

	//set perspective mode
	setUpPerspective();

	//Draw stuff
	glPushMatrix();
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();


	gluLookAt(cameras[currentCam]->getPosition().x,
			cameras[currentCam]->getPosition().y,
			cameras[currentCam]->getPosition().z,
			cameras[currentCam]->getLookAt().x,
			cameras[currentCam]->getLookAt().y,
			cameras[currentCam]->getLookAt().z,
			cameras[currentCam]->getUp().x,
			cameras[currentCam]->getUp().y,
			cameras[currentCam]->getUp().z
	);

	//Enable Guide
	if (guideEnabled){
		glBegin(GL_QUADS);
		glVertex3f(-1.0f, 0.0f, -1.0f);
		glVertex3f(1.0f, 0.0f, -1.0f);
		glVertex3f(1.0f, 0.0f, 1.0f);
		glVertex3f(-1.0f, 0.0f, 1.0f);
		glColor3f(0.0f, 0.0f, 0.0f);
		glEnd();
	}

	//Draw all objects
	for (unsigned int i = 0; i < meshLoaders.size(); i++){
		meshLoaders[i]->draw();
	}

	//Draw CustomMeshes
	for (unsigned int i = 0; i < meshLoaders.size(); i++){
		//customMeshes[i]->draw();
	}
	glPopMatrix();
	glfwSwapBuffers(window);
}
示例#2
0
void do_display (void)
{
    switch(GetStyle())
    {
        case FTGL_BITMAP:
        case FTGL_PIXMAP:
        case FTGL_OUTLINE:
            break;
        case FTGL_POLYGON:
            glDisable(GL_BLEND);
            setUpLighting();
            break;
        case FTGL_EXTRUDE:
            glEnable(GL_DEPTH_TEST);
            glDisable(GL_BLEND);
            setUpLighting();
            break;
        case FTGL_TEXTURE:
            glEnable(GL_TEXTURE_2D);
            glDisable(GL_DEPTH_TEST);
            setUpLighting();
            glNormal3f(0.0, 0.0, 1.0);
            break;

    }

    glColor3f(1.0, 1.0, 1.0);
    // If you do want to switch the color of bitmaps rendered with glBitmap,
    // you will need to explicitly call glRasterPos (or its ilk) to lock
    // in a changed current color.

    // If there is an active layout use it to render the font
    if (layouts[currentLayout])
    {
        layouts[currentLayout]->Render(myString);
    }
    else
    {
        fonts[current_font]->Render(myString);
    }

    renderFontmetrics();
    renderFontInfo();
}
示例#3
0
void do_display (void)
{
    switch(current_font)
    {
        case FTGL_BITMAP:
        case FTGL_PIXMAP:
        case FTGL_OUTLINE:
            glDisable(GL_TEXTURE_2D);
            break;
        case FTGL_POLYGON:
            glDisable(GL_TEXTURE_2D);
            setUpLighting();
            break;
        case FTGL_EXTRUDE:
            glEnable(GL_DEPTH_TEST);
            glDisable(GL_BLEND);
            glEnable(GL_TEXTURE_2D);
            setUpLighting();
            glBindTexture(GL_TEXTURE_2D, textureID[0]);
            break;
        case FTGL_TEXTURE:
        case FTGL_BUFFER:
            glEnable(GL_TEXTURE_2D);
            glDisable(GL_DEPTH_TEST);
            setUpLighting();
            glNormal3f(0.0, 0.0, 1.0);
            break;
    }
    glTranslatef(OX, OY,0);

    // If you do want to switch the color of bitmaps rendered with glBitmap,
    // you will need to explicitly call glRasterPos (or its ilk) to lock
    // in a changed current color.

    glPushMatrix();
        glColor3f(1.0, 1.0, 1.0);
        int renderMode = FTGL::RENDER_FRONT | FTGL::RENDER_BACK;
        if(layouts[currentLayout])
            layouts[currentLayout]->Render(myString, -1,
                                           FTPoint(), renderMode);
        else
            fonts[current_font]->Render(myString, -1,
                                        FTPoint(), FTPoint(), renderMode);

        if(current_font == FTGL_EXTRUDE)
        {
            glBindTexture(GL_TEXTURE_2D, textureID[1]);
            renderMode = FTGL::RENDER_SIDE;
            if(layouts[currentLayout])
                layouts[currentLayout]->Render(myString, -1,
                                               FTPoint(), renderMode);
            else
                fonts[current_font]->Render(myString, -1,
                                            FTPoint(), FTPoint(), renderMode);
        }
    glPopMatrix();

    glPushMatrix();
        renderFontmetrics();
    glPopMatrix();

    renderFontInfo();
}