如何将对象添加到缓冲区? opengl
How to add objects to buffer? opengl
在这个程序中我想画多边形。
首先我做了这样的事情:
GLuint VertexArrayID;
多边形绘制示例:
if (figure == RECTANGLE)
{
data[0][0] = px1; data[0][1] = py1;
data[1][0] = px2; data[1][1] = py1;
data[2][0] = px2; data[2][1] = py2;
data[3][0] = px1; data[3][1] = py2;
vertex_count = 4;
}
vbo_create(vertex_count);
这里是 vbo 创建函数
void vbo_create(int vertex_count)
{
if (vertex_count > 0)
{
glGenBuffers(3, VertexArrayID);
glBindBuffer(GL_ARRAY_BUFFER, VertexArrayID[0]);
glBufferData(GL_ARRAY_BUFFER, 2 * sizeof(float), data, GL_STATIC_DRAW);
//GLfloat* data = (GLfloat*)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
glVertexPointer(2, GL_FLOAT, 0, NULL);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_TRIANGLE_FAN, 0, vertex_count);
glDisableClientState(GL_VERTEX_ARRAY);
}
}
问题是我想将所有创建的对象保存在一个缓冲区中,但我不知道该怎么做。我试图制作一个 VertexArrayID 数组,但它无法正常工作。
有什么建议吗?
假设您有 10 个三角形。然后,您只需将 30 个顶点放入这个缓冲区并使用 GL_TRIANGLES 渲染所有顶点。您还可以添加四个顶点并使用 GL_QUADS。如果对你有用的话,最好有相当少的顶点缓冲区。
在这个程序中我想画多边形。
首先我做了这样的事情:
GLuint VertexArrayID;
多边形绘制示例:
if (figure == RECTANGLE)
{
data[0][0] = px1; data[0][1] = py1;
data[1][0] = px2; data[1][1] = py1;
data[2][0] = px2; data[2][1] = py2;
data[3][0] = px1; data[3][1] = py2;
vertex_count = 4;
}
vbo_create(vertex_count);
这里是 vbo 创建函数
void vbo_create(int vertex_count)
{
if (vertex_count > 0)
{
glGenBuffers(3, VertexArrayID);
glBindBuffer(GL_ARRAY_BUFFER, VertexArrayID[0]);
glBufferData(GL_ARRAY_BUFFER, 2 * sizeof(float), data, GL_STATIC_DRAW);
//GLfloat* data = (GLfloat*)glMapBuffer(GL_ARRAY_BUFFER, GL_READ_WRITE);
glVertexPointer(2, GL_FLOAT, 0, NULL);
glEnableClientState(GL_VERTEX_ARRAY);
glDrawArrays(GL_TRIANGLE_FAN, 0, vertex_count);
glDisableClientState(GL_VERTEX_ARRAY);
}
}
问题是我想将所有创建的对象保存在一个缓冲区中,但我不知道该怎么做。我试图制作一个 VertexArrayID 数组,但它无法正常工作。 有什么建议吗?
假设您有 10 个三角形。然后,您只需将 30 个顶点放入这个缓冲区并使用 GL_TRIANGLES 渲染所有顶点。您还可以添加四个顶点并使用 GL_QUADS。如果对你有用的话,最好有相当少的顶点缓冲区。