首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于数据可视化的VAO +VAO逻辑(boost图)

用于数据可视化的VAO +VAO逻辑(boost图)
EN

Stack Overflow用户
提问于 2014-01-09 19:05:56
回答 1查看 117关注 0票数 0

我正在使用Boost图形库来组织由图形中的边链接的点,现在我正在处理它们的显示。

我是OpenGL ES 2/GLKit和顶点数组对象/顶点缓冲区对象的新手。我跟踪了本教程,这确实很好,但最后我想我应该做的是:

  • 只为形状类的“模型”实例创建一次顶点(表示我的boost点位置的"sprite“);
  • 利用该模型为VBO提供数据;
  • 将VAO绑定到一个独特的VAO;
  • 在一次抽签调用中绘制所有内容,更改每个"sprite“的矩阵。

我读过访问VBO对性能非常不利,我应该使用交换VBO。

我的问题是:

  • 矩阵的平移/缩放/旋转是否可以在单个调用中实现?
  • 那么,如果是这样的话:我的逻辑好吗?
  • 最后:最好有一些代码示例:-)
EN

回答 1

Stack Overflow用户

发布于 2014-01-09 20:43:30

如果您只想绘制图表,那么除了OpenGL ES之外,还有更容易使用的库。但假设你有自己的理由:

只需尝试一下你所描述的,并测试它。如果它足够好,那么恭喜你:你已经完成了。

您没有提到图的数量、每个图的点数、修改点的频率以及您想要的帧速率。

如果您正在更新几百个顶点,并且它们不经常更改,您甚至可能不需要VBO。最近的硬件可以渲染许多精灵,即使没有它们。这取决于有多少个色系和它们变化的频率。

首先,尝试如下:

代码语言:javascript
复制
// Bind the shader
glUseProgram(defaultShaderProgram);

// Set the projection (camera) matrix.
glUniformMatrix4fv(uProjectionMatrix, 1, GL_FALSE, (GLfloat*)projectionMatrix[0]);

for ( /* each chart */ ) 
{
    // Set the sprite (scale/rotate/translate) matrix.
    glUniformMatrix4fv(uModelViewMatrix,  1, GL_FALSE, (GLfloat*)spriteViewMatrix[0]);

    // Set the vertices.
    glVertexAttribPointer(ATTRIBUTE_VERTEX_POSITION, 3, GL_FLOAT,         GL_FALSE, sizeof(Vertex), &pVertices->x));
    glVertexAttribPointer(ATTRIBUTE_VERTEX_DIFFUSE,  4, GL_UNSIGNED_BYTE, GL_TRUE,  sizeof(Vertex), &pVertices->color));

    // Render.  Assumes your shader does not use a texture, 
    // since we did not set one.
    glDrawArrays(GL_TRIANGLES, 0, numVertices);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21028969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档