[英]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。 如果可以的話,最好有很少的頂點緩沖區。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.