开发者

opengl color quadrangle

i have a programm that creates a black border an white corner (quadrangle).

now i want to make the corner of the quadrangle in an different color.

i don't know where exactly to write the code, and i don't开发者_如何学Python know much a but color4f, i searcherd on google, but didn't get it. (is there a good description somewhere?)

#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;
}


First of all, you probably want glColor3f. glColor4f also takes an alpha (transparency) value, which you probably don't care about yet. The range of parameters is 0 for no intensity and 1 for max intensity of red, green and blue. So you could do something like:

  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


Specify vertex color right before specifying the vertex itself, in the GL_POLYGON block.

However, I would recommend going for OpenGL 2.x instead of learning that old OpenGL 1.x stuff anymore. There you use VBOs (Vertex Buffer Objects) instead of glBegin/glEnd etc.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜