Мой треугольник OpenGL не отображается - PullRequest
0 голосов
/ 27 мая 2018

Треугольник не появляется на экране.Я использую Dev c ++ 4.9.9.2 (я знаю, что вам это не нравится, но для меня это все еще лучше :) с бесплатным перенасыщением.

Вот код:

#include <GL/glut.h>


void display(){

     glClear ( GL_COLOR_BUFFER_BIT );
     glutSwapBuffers();


     glBegin ( GL_TRIANGLES );

          glColor3f ( 0.0, 1.0, 0.0);

          glVertex2f (-0.5,-0.5);
          glVertex2f (0.5,-0.5);
          glVertex2f (0.0, 0.5);

     glEnd();

 }

 void reshape ( int width, int height ){

     glViewport ( 0, 0, width, height );

 }

 void initOpenGL(){

     glClearColor ( 1.0, 0.1, 0.0, 1.0 );

 }

 int main (int argc, char **argv){

     glutInit ( &argc , argv );
     glutInitDisplayMode ( GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH );
     glutInitWindowSize ( 500, 500 );
     glutInitWindowPosition ( 100, 100 );
     glutCreateWindow ( "OpenGl" );

     initOpenGL();

     glutDisplayFunc ( display );
     glutIdleFunc ( display );
     glutReshapeFunc ( reshape );

     glutMainLoop ();

     return 0;

 }

1 Ответ

0 голосов
/ 27 мая 2018

Давайте подробнее рассмотрим функцию display:

display()
{
    glClear();
    glutSwapBuffers();
    drawTriangle();
}

glClear() очищает буфер до постоянного цвета.glutSwapBuffers() меняет местами передний буфер и задний буфер.Это покажет текущее содержимое буфера (который только чистый цвет) на экране.Содержимое нового буфера будет неопределенным.Каждый вызов отрисовки будет отрисовываться в задний буфер.

Как видите, у программы никогда не было возможности отобразить на экране что-либо, кроме чистого цвета.Просто переместите glutSwapBuffers() в конец функции:

display()
{
    glClear();
    drawTriangle();
    glutSwapBuffers();
}

И, пожалуйста, выберите более свежий учебник.Вы используете конвейер с фиксированной функцией, который устарел в течение 10 лет.Вы можете узнать это по звонкам типа glBegin() или glVertex3f().Нет причин изучать что-то, что умирает (или уже мертво на некоторых платформах).

...