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

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

8得票2回答
glVertexAttribDivisor和glVertexBindingDivisor有什么区别?

我正在寻找将属性与任意顶点分组关联的方法,一开始看来实例化似乎是我完成此操作的唯一方法,但后来我偶然发现了这个问题和这个答案: “然而,在较新版本的OpenGL中,可以设置某个顶点属性缓冲区偏移量前进的速率。实际上,这意味着在属性偏移量前进之前,给定顶点数组的数据会被复制到n个顶点中。设置这...

9得票2回答
如何释放MTLBuffer和MTLTexture的内存空间

我知道如何创建MTLBuffer和MTLTexture,但是当这些资源不再需要时,如何释放GPU内存呢?

9得票1回答
退化三角形与GL_TRIANGLE_STRIP的问题

我正在尝试使用一次glDrawElements调用绘制多个三角形条带,我的研究告诉我需要使用退化三角形。也许我的理解有误,但我认为这应该允许我从一个条带“跳”到另一个条带。 如果您认为相关,可以在我发布的这个最近的问题中找到我整个代码。 基本上,我正在尝试绘制两个四边形(为简化起见),每个...

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...

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

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

7得票1回答
OpenGL顶点缓冲对象,我能否访问顶点数据以进行其他用途,例如碰撞检测?

我目前正在使用Superbible第五版附带的GLTools类。我正在查看GLTriangleBatch类,它具有以下代码: // Create the master vertex array object glGenVertexArrays(1, &vertexArrayBuffe...

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

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

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

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