OpenGL цвет четырехугольника - PullRequest
0 голосов
/ 04 апреля 2010

У меня есть программа, которая создает черную рамку белого угла (четырехугольник).

Теперь я хочу сделать угол четырехугольника другого цвета.

Я не знаю, где именно написать код, и я немного знаю, но color4f, я искал в Google, но не получил его. (где-нибудь есть хорошее описание?)

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

Ответы [ 2 ]

3 голосов
/ 04 апреля 2010

Прежде всего, вы, вероятно, хотите glColor3f. glColor4f также принимает альфа-значение (прозрачность), которое вам, вероятно, пока не важно. Диапазон параметров равен 0 для отсутствия интенсивности и 1 для максимальной интенсивности красного, зеленого и синего. Так что вы можете сделать что-то вроде:

  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 голосов
/ 04 апреля 2010

Укажите цвет вершины прямо перед указанием самой вершины в блоке GL_POLYGON.

Однако я бы порекомендовал перейти на OpenGL 2.x вместо того, чтобы больше изучать этот старый OpenGL 1.x. Там вы используете VBO (Vertex Buffer Objects) вместо glBegin / glEnd и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...