当前位置: 首页 > 知识库问答 >
问题:

LWJGL glVertexAttribPointer索引切换

越姚石
2023-03-14

当我通过LWJGL学习OpenGL时,我一直在浏览LWJGL wiki上的教程。具体来说,这个。

我的问题是,尽管我已经复制了该代码、调用调用、函数对函数,但需要切换两个顶点属性指针(所以代码如下所示:

GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, Vertex.sizeInBytes, 
    // Put the colors in attribute list 1
GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT, false, Vertex.sizeInBytes,
    Vertex.elementBytes * 4);

将其切换为位置索引为1而颜色索引为0,可以像预期的那样进行很好的渐变渲染。但是,如果我在切换索引的情况下运行它(我认为它应该工作的方式,我得到了这个:

显然,在研究了一段时间后,位置和颜色数据已经被切换,因此,切换索引号完全解决了问题,但我很确定我已经正确地遵循了所有内容。代码有什么问题?为什么这么混蛋?

共有1个答案

阎俊英
2023-03-14

您不应该像那样对属性ID进行硬编码,而只是希望它们最终链接到正确的着色器属性。

您需要使用glBindAttribLocation(在glLinkProgram之前)或GLGetAttribllocation,以便可以将着色器变量映射到其id号。

 类似资料:
  • 如前所述,对象中的元素遵循基于零的索引。 有三种可用的索引方法类型: 字段访问,基本切片和高级索引。 基本切片是 Python 中基本切片概念到 n 维的扩展。 通过将start,stop和step参数提供给内置的slice函数来构造一个 Python slice对象。 此slice对象被传递给数组来提取数组的一部分。 输出如下: [2 4 6] 在上面的例子中,ndarray对象由arang

  • 主要内容:基本切片,多维数组切片在 NumPy 中,如果想要访问,或修改数组中的元素,您可以采用索引或切片的方式,比如使用从 0 开始的索引依次访问数组中的元素,这与 Python 的 list 列表是相同的。 NumPy 提供了多种类型的索引方式,常用方式有两种:基本切片与高级索引。本节重点讲解基本切片。 基本切片 NumPy 内置函数 slice() 可以用来构造切片对象,该函数需要传递三个参数值分别是 start(起始索引

  • Python 的内置容器对象,例如列表,可以通过索引或切片来访问和修改。这在 ndarray 对象中也一样,ndarray 对象中的元素遵循基于零的索引,常用的索引方式:元素访问、切片索引、布尔型索引。 1. 元素访问 1.1 单一元素访问 一维数组的元素访问非常简单,和 Python 列表规则基本差不多。对单一元素的访问,索引遵循从 0 开始,依次递增 1。 案例 例如,对于创建的一维数组,我们

  • 本文向大家介绍浅析NumPy 切片和索引,包括了浅析NumPy 切片和索引的使用技巧和注意事项,需要的朋友参考一下 ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。 ndarray 数组可以基于 0 - n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新

  • 本文向大家介绍numpy中索引和切片详解,包括了numpy中索引和切片详解的使用技巧和注意事项,需要的朋友参考一下 索引和切片 一维数组 一维数组很简单,基本和列表一致。 它们的区别在于数组切片是原始数组视图(这就意味着,如果做任何修改,原始都会跟着更改)。 这也意味着,如果不想更改原始数组,我们需要进行显式的复制,从而得到它的副本(.copy())。 二维数组 二维数组中,各索引位置上的元素不再

  • 本文向大家介绍Pytorch Tensor的索引与切片例子,包括了Pytorch Tensor的索引与切片例子的使用技巧和注意事项,需要的朋友参考一下 1. Pytorch风格的索引 根据Tensor的shape,从前往后索引,依次在每个维度上做索引。 示例代码: 上述代码创建了一个shape=[4, 3, 28, 28]的Tensor,我们可以理解为4张图片,每张图片有3个通道,每个通道是28x