如何将两个不同的顶点缓冲区绑定到两个槽
how to bind two different vertex buffer to two slots
如何将两个顶点缓冲区绑定到不同的槽(slot0和slot1),
我想要这样的东西在OpenGL(QT):
QGLBuffer VB0, VB1;
VB0.bind(0);
VB1.bind(1);
我到目前为止有这个:
verticesBuffer = new QGLBuffer(QGLBuffer::VertexBuffer);
verticesBuffer->create();
verticesBuffer->bind();
verticesBuffer->setUsagePattern(QGLBuffer::DynamicDraw);
verticesBuffer->allocate(vertices.constData(), _ANGLE_CNT * _RANGE_CNT * 6 * sizeof(QVector3D));
verticesBuffer->release();
colorsBuffer = new QGLBuffer(QGLBuffer::VertexBuffer);
colorsBuffer->create();
colorsBuffer->bind();
colorsBuffer->setUsagePattern(QGLBuffer::DynamicDraw);
colorsBuffer->allocate(_ANGLE_CNT * _RANGE_CNT * 6 * sizeof(float));
colorsBuffer->release();
你能写一个例子来解释我应该做些什么来绑定这两个缓冲区到插槽吗?
当人们不完全理解我的问题时,他们不会随意给它投反对票。我在另一个论坛上问了同样的问题,我得到了确切的答案。我的账户被这种愚蠢的投票方式封锁了。所以,我在这里回答我自己的问题:
glGenVertexArrays(1, &VAO_ID);
glBindVertexArray(VAO_ID);
glBindBuffer(GL_ARRAY_BUFFER,buffer_0_id);
glVertexAttribPointer(POSITION_0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
...
glBindBuffer(GL_ARRAY_BUFFER,buffer_1_id);
glVertexAttribPointer(POSITION_1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);
...
layout(location = POSITION_0) in vec3 Position0;
layout(location = POSITION_1) in vec3 Position1;
更新:将此添加到初始化部分:
verticesSize = sizeof(vertices);
colorsSize = sizeof(colors);
glGenBuffers(2, vbods);
glBindBuffer(GL_ARRAY_BUFFER, vbods[VERTEX]);
glBufferData(GL_ARRAY_BUFFER,
sizeof(vertices)+sizeof(colors),
vertices, GL_STATIC_DRAW );
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
和这个到渲染部分:
glBindBuffer(GL_ARRAY_BUFFER, vbods[VERTEX]);
glVertexPointer(2, QVector3D, 0, 0);
glColorPointer(3, GL_FLOAT, 0, (GLvoid *) (ANGLE_COUNT * RANGE_COUNT * 6));
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 是否可以在 OpenGL 中的同一调用中呈现两个具有不同索引起点的不同缓冲区?
- 绘制一个对象,比较模具缓冲区的两个不同值
- 有没有办法将两个输入图像堆叠到卤化物发生器中的单个 4 维缓冲区中?
- 如果用户输入两个或多个由空格分隔的字符串C++如何防止缓冲区溢出?
- 带有共享缓冲区的两个等待线程(生产者/消费者)
- 使用推力使用sort_by_key对两个OpenGL缓冲区进行排序
- 两个C++库如何共享一个静态缓冲区?
- memcmp - 是否有更快的方法来按位比较两个缓冲区
- 具有两个不同缓冲区的指针算法
- 在Win32管道上将两个缓冲区合并为一个写操作
- 函数连接两个写入缓冲区开头的字符串
- 如果缓冲区大小小于文件大小,如何合并两个文件
- 如何在一个屏幕中使用两个缓冲区?可能吗?(快板)
- 在两个端子之间传递缓冲区(命名管道)
- 具有相同元素的两个常量缓冲区
- 在OpenGL中,我如何在两个深度缓冲区之间进行深度测试
- 如何将两个不同的顶点缓冲区绑定到两个槽
- 在C中连接两个字符串并动态分配缓冲区
- 在两个不同的顶点数组对象中使用顶点缓冲区