2010-04-03 3 views
0

나는 검은 테두리와 흰 모서리 (사변형)를 만드는 프로그램이있다.opengl color quadrangle

이제 사각형의 모퉁이를 다른 색으로 만들고 싶습니다.

코드를 정확히 어디에 써야할지 모르겠지만 Google에서 colorcher를 많이 찾지는 못했지만 이해하지 못했습니다. (좋은 설명은 어디입니까?)

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

답변

3

우선 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

바로 GL_POLYGON 블록에, 정점 자체를 지정하기 전에 정점 색상을 지정합니다.

그러나 이전 OpenGL 1.x를 더 이상 배우지 않고 OpenGL 2.x를 사용하는 것이 좋습니다. glBegin/glEnd 대신 VBOs (Vertex Buffer Objects)를 사용합니다.

+0

물론 OpenGL 지원 중단이 실제로 발생하지 않았으며 glBegin/glEnd 데모는 여전히 OpenGL을 시작하기에 좋은 방법입니다. http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=258525&page=1 –