使用 glDrawArray 函数绘制三角形
Draw triangle with glDrawArray function
我想用 glDrawArrays() 函数在 opengl 中绘制一个三角形。
以下是我的代码:
.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);
};
使用这段代码,我得到的只是一片空白 window。没有点被绘制。我做错了什么?我的 glDrawArray 函数有什么问题吗?
我不知道当你没有指定顶点的 z 分量时会发生什么。
但有一件事是肯定的
glOrtho(-10,10,-10,10,1,10);
将显示盒子内的所有物品。
如果你的 z 分量是 0,它就不会出现。
尝试用类似的东西替换它:
glOrtho(-10,10,-10,10,-1,10);
我想用 glDrawArrays() 函数在 opengl 中绘制一个三角形。 以下是我的代码: .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);
};
使用这段代码,我得到的只是一片空白 window。没有点被绘制。我做错了什么?我的 glDrawArray 函数有什么问题吗?
我不知道当你没有指定顶点的 z 分量时会发生什么。
但有一件事是肯定的
glOrtho(-10,10,-10,10,1,10);
将显示盒子内的所有物品。 如果你的 z 分量是 0,它就不会出现。
尝试用类似的东西替换它:
glOrtho(-10,10,-10,10,-1,10);