Нарисуйте треугольник с функцией 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 );}

.заголовочный файл:

         #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?

-2

Решение

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

Но одно точно

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

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

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]