-2
我想用glDrawArrays()函數在opengl中繪製一個三角形。 以下是我的代碼: .cpp文件:用glDrawArray函數繪製三角形
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文件:
#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];'和借鑑,只有兩個頂點'詮釋num_indices = 2;'。嘗試改變爲'3' – ikleschenkov
哦!那是一個編輯錯誤。換了之後,我也得到了同樣的結果。 – Yashu