2015-01-29 5 views
1

Я пытаюсь сделать прямоугольник любого цвета, кроме белого или черного, но, похоже, терпит неудачу, так как он всегда белый, независимо от того, что я ввел в код. Я не знаю, что я делаю неправильно (если что-то не так с моим кодом даже, насколько я могу судить, это ничем не отличается от некоторых примеров, которые я видел даже). Вот код, у меня есть, что я думаю, что должен делать красный прямоугольник, но только делает белой один:Как изменить белый прямоугольник в цветной прямоугольник, используя перегиб?

#include <gl/glut.h> 

void mydisplay() 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    glColor3f(1.0f, 0.0f, 0.0f); //sets color 
    glBegin(GL_QUADS); 
     glVertex2f(-0.5, -0.5); 
     glVertex2f(-0.5, 0.5); 
     glVertex2f(0.5, 0.5); 
     glVertex2f(0.5, -0.5); 
    glEnd(); 

    //glutSwapBuffers(); 
    //glutSolidTeapot(1); 
} 

int main (int argc, char** argv) 
{ 
    glutCreateWindow("simple"); 
    glutDisplayFunc(mydisplay); 
    glutMainLoop(); 
} 

ответ

0

Хорошо, я нашел то, что мне не хватало одной строки кода. Мне нужен glFlush(); вместо glutSwapBuffers(); Кроме того, я мог бы смешивать цвета, назначая цвета каждой вершине. Вот что у меня есть сейчас, что даст разноцветный квадрат:

#include <gl/glut.h> 

void mydisplay() 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

//sets color 
    glBegin(GL_QUADS); 
     glColor3f(1.0f, 0.0f, 0.0f); 
     glVertex2f(-0.5, -0.5); 
     glColor3f(1.0f, 0.0f, 0.0f); 
     glVertex2f(-0.5, 0.5); 
     glColor3f(0.0f, 1.0f, 0.0f); 
     glVertex2f(0.5, 0.5); 
     glColor3f(0.0f, 0.0f, 1.0f); 
     glVertex2f(0.5, -0.5); 

    glEnd(); 
    glFlush(); 
//glutSwapBuffers(); 
//glutSolidTeapot(1); 
} 

int main (int argc, char** argv) 
{ 
    glutCreateWindow("simple"); 
    glutDisplayFunc(mydisplay); 
    glutMainLoop(); 
} 

Другой код, указанный в предыдущем ответе работает, как хорошо. Поэтому я голосую, но принимаю свой ответ (glFlush() работает и для моего исходного кода, и это более простое исправление).

3

Как-то вы забыли вызвать некоторые функции для инициализации примера GLUT и размера окна настройки. Также вы не установили четкий цвет и прокомментировали функцию glutSwapBuffers.

#include <gl/glut.h> 

void mydisplay() 
{ 
    glClearColor(1.0, 1.0, 1.0, 1.0); // add this 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    glColor3f(1.0f, 0.0f, 0.0f); //sets color 
    glBegin(GL_QUADS); 
    glVertex2f(-0.5, -0.5); 
    glVertex2f(-0.5, 0.5); 
    glVertex2f(0.5, 0.5); 
    glVertex2f(0.5, -0.5); 
    glEnd(); 

    glutSwapBuffers(); 
} 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); // add this 
    glutInitWindowSize(640, 480); // add this 
    glutCreateWindow("simple"); 
    glutDisplayFunc(mydisplay); 
    glutMainLoop(); 
} 

Я добавил строки, которые я добавил. Попробуй.

Смежные вопросы