Нарисуйте треугольник с функцией glDrawArray

Я хочу нарисовать треугольник в opengl с помощью функции glDrawArrays(). Ниже приведен мой код: .cpp файл:

        void linedr2::initializeGL()
   {
            glClearColor(0, 0, 0, 1.0);
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            glOrtho(-10,10,-10,10,1,10);

             vertices[0].x = 10;
            vertices[0].y = 5;

            // Vertex 2
           vertices[1].x = -10;
           vertices[1].y = 3;

                // Vertex 3
          vertices[2].x = 5;
         vertices[2].y = -5;

       }

    void linedr2::paintGL()
     {
              int num_indices = 2;
             glEnableClientState( GL_VERTEX_ARRAY );

               glVertexPointer( 2, GL_FLOAT, 0, vertices);
              glDrawArrays(GL_TRIANGLES, 0, num_indices);
               glDisableClientState( GL_VERTEX_ARRAY );


         }

.header file:

         #include <QWidget>
         #include <QOpenGLWidget>
         #include <gl/GLU.h>
         #include <gl/GL.h>

         class linedr2: public QOpenGLWidget
       {
        public:
         linedr2(QWidget *parent = 0);
         ~linedr2();

       struct vertex
    {
       GLfloat x, y; //z;
    };
         vertex *vertices = new vertex[2];

         protected:
           void initializeGL();
         void paintGL();
         void resizeGL(int w, int h);


       };

С этим кодом я просто получаю пустое окно. Очки не начисляются. Что я делаю не так? Что-то не так в моей функции glDrawArray?

1 ответ

Решение

Я не знаю, что происходит, когда вы не указываете компонент z своих вершин.

Но одно точно

glOrtho(-10,10,-10,10,1,10);

будет отображать все, что принадлежит внутри коробки. Если ваш компонент z равен 0, он не появится.

попробуйте заменить его чем-то вроде:

glOrtho(-10,10,-10,10,-1,10);
Другие вопросы по тегам