36得票5回答
VBO何时比“简单”的OpenGL原语(glBegin())更快?

经过多年听说顶点缓冲对象(Vertex Buffer Objects,VBOs)的使用后,我最近决定进行实验尝试它们的效果(我的项目通常不需要极高的性能表现...) 下面我将描述我的实验情况,但简而言之,我在“简单”直接模式(glBegin()/glEnd())、顶点数组(CPU端)和VBO...

18得票2回答
OpenGL顶点缓冲区混乱问题

有人可以解释一下VertexBuffer、VertexArray、VertexBufferObject和VertexArrayObject之间的区别吗?我甚至不确定这些是否都是指不同的东西,但我在OpenGL规范中看到了所有这些术语。 我知道一个VertexBuffer只包含顶点,一旦绑定,...

17得票2回答
OpenGL. 使用glBufferData更新顶点缓冲区

我正在使用 OpenGL 实现一些批处理绘图。为此,我创建了一个 顶点缓冲区 来存储数据。 注意:这个缓冲区通常会在每帧更新,但永远不会减小大小(但仍然可以增加)。 我的问题是:在更新它时(而不是使用 glMapBuffer 等),是否可以技术上使用 glBufferData(以流式写入模...

16得票1回答
在VBO中更新顶点数据(glBufferSubData vs glMapBuffer)

在创建VBO之后,我想更新对象的顶点列表。我看到了glBufferSubData和glMapBuffer两种方法,它们似乎都可以实现类似的功能,这让我不确定该使用哪种方法。 我的伪代码工作流是: 创建对象 开始顶点更新(调用带数据= nullptr的glBufferData) ...

14得票2回答
在使用VAO时,VBO中的交错(interleaving)是否可以提高性能?

当使用交错的VBO而非多个VBO时,通常可以加速操作速度。在使用VAOs时这个方法是否同样有效呢? 因为将顶点坐标、法线等放入单独的VBO更加方便,而且一个VBO可以被多个VAO共用。

13得票2回答
当使用布局限定符时,未缓冲顶点属性的OpenGL默认值是什么?

我假设这将是那些"未定义"的事情之一,但我似乎无法从Google上找到一个明确的答案。假设在我的顶点着色器中有:layout(location = 0) in vec3 vPosition; layout(location = 1) in vec3 vNormal; layout(locati...

12得票1回答
VAO如何保留缓冲区绑定?

我很难理解VAO如何处理缓冲区映射。以下是类似于这种伪代码的描述:SetUp: BindVAO BindArrayBuffer glBufferData(GL_ARRAY_BUFFER, ExpectedMaxCount, NULL, GL_DYNAMIC_DRAW);//Allo...

12得票2回答
C++:OpenGL,glm和结构体填充

我可以安全地使用glm::*类型(例如vec4,mat4)填充顶点缓冲区吗?std::vector<glm::vec3> vertices; glBufferData(GL_ARRAY_BUFFER, sizeof(glm::vec3) * vertices.size()...

11得票1回答
GLES2 是否必须使用 glBindAttribLocation() 函数?

这可能是一个初学者问题。据我理解,glBindAttribLocation(...,AAA,...)将把程序中的一个属性绑定到AAA的位置ID上,只要AAA是唯一的。如果我有以下代码:glBindAttribLocation(..., 0, "XXX"); glBindAttribLocati...

11得票1回答
如何在Python和PyOpenGL中使用VBOs

以下 Python 程序应该在窗口的右上象限绘制一个白色三角形。import pygame from OpenGL.GL import * from ctypes import * pygame.init () screen = pygame.display.set_mode ((800,6...