2010-04-03 5 views
0

J'ai un programme qui crée une bordure noire d'un coin blanc (quadrangle).opengl couleur quadrangle

maintenant je veux faire le coin du quadrilatère dans une couleur différente.

Je ne sais pas exactement où écrire le code, et je ne sais pas beaucoup mais color4f, j'ai cherché sur google, mais je n'ai pas compris. (est-il une bonne description quelque part?)

#include <iostream> 
#include <GL/freeglut.h>   

void Init() 
{ 


    glColor4f(100,0,0,0); 

} 

void RenderScene() //Zeichenfunktion 
{ 

    glLoadIdentity(); 
    glBegin(GL_POLYGON); 
     glVertex3f(-0.5, -0.5, -0.5); 
     glVertex3f( 0.5, -0.5, -0.5); 
     glVertex3f( 0.5, 0.5, -0.5); 
     glVertex3f(-0.5, 0.5, -0.5); 
    glEnd(); 
    glFlush(); 
} 

void Reshape(int width,int height) 
{ 

} 

void Animate (int value)  
{ 

    std::cout << "value=" << value << std::endl; 
    glutPostRedisplay(); 
    glutTimerFunc(100, Animate, ++value);   
} 

int main(int argc, char **argv) 
{ 
    glutInit(&argc, argv);    // GLUT initialisieren 
    glutInitDisplayMode(GLUT_RGB);  // Fenster-Konfiguration 
    glutInitWindowSize(600, 600); 
    glutCreateWindow("inkrement screen; visual screen"); // Fenster-Erzeugung 
    glutDisplayFunc(RenderScene);   // Zeichenfunktion bekannt machen 
    glutReshapeFunc(Reshape); 

    glutTimerFunc(10, Animate, 0); 
    Init(); 
    glutMainLoop(); 
    return 0; 
} 

Répondre

3

Tout d'abord, vous voulez probablement glColor3f. glColor4f prend également une valeur alpha (transparence), dont vous ne vous souciez probablement pas encore. La plage de paramètres est 0 pour aucune intensité et 1 pour l'intensité maximale de rouge, vert et bleu. Ainsi, vous pouvez faire quelque chose comme:

glColor3f(1.0f, 0.0f, 0.0f); // red 
    glVertex3f(-0.5, -0.5, -0.5); // this vertex is red 
    glColor3f(0.0f, 1.0f, 0.0f); // green 
    glVertex3f( 0.5, -0.5, -0.5); // this vertex is green 
    glColor3f(0.0f, 0.0f, 1.0f); // blue 
    glVertex3f( 0.5, 0.5, -0.5); // this vertex is blue 
    glVertex3f(-0.5, 0.5, -0.5); // since it wasn't changed, this one will be blue, too 
0

droit couleur Spécifiez le sommet avant de spécifier le sommet lui-même, dans le bloc GL_POLYGON.

Cependant, je recommande d'aller pour OpenGL 2.x au lieu d'apprendre ce vieux truc OpenGL 1.x plus. Là, vous utilisez des VBO (Vertex Buffer Objects) au lieu de glBegin/glEnd etc.

+0

Je suis d'accord, bien sûr, OpenGL deprecation n'a pas vraiment se produire, et les glBegin/glEnd démos sont toujours une bonne façon de commencer avec OpenGL. http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=258525&page=1 –

Questions connexes