gpt4 book ai didi

arrays - 在 Mac 上将变化的数组从顶点传递到几何着色器

转载 作者:行者123 更新时间:2023-12-02 05:06:59 24 4
gpt4 key购买 nike

我希望能够将每个顶点的任意数量的变化值从顶点着色器传递到几何着色器。我知道OpenGL没有动态数组,所以应该在编译时指定数量。整个程序应该在配备 NVIDIA GeForce 9400M 显卡和仅提供 OpenGL 2.1 以及一些扩展的驱动程序的 Apple MacBook 上运行。

这里的问题似乎是几何着色器以每个顶点一个元素的形式或数组的形式获取输入。据我所知,我的设置中没有可用的数组数组,也没有包含数组的接口(interface) block 数组。到目前为止,我能想到的最佳解决方案是指定多个变量来传递这些信息,从顶点着色器中的数组中提取这些信息,然后在几何着色器中将其转回具有特定步长的数组。这样,仍然可以使用计算索引来执行对值的访问。

有没有更好、更优雅的方法?

最佳答案

来自EXT_geometry_shader4 specification :

User-defined varying variables can be declared as arrays in the vertex shader. This means that those, on input to the geometry shader, must be declared as two-dimensional arrays. See sections 4.3.6 and 7.6 of the OpenGL Shading Language Specification for more information.

例如,在顶点着色器中,您可以指定

varying vec2 value[2];

在几何着色器中,这变成一个二维数组,例如以三角形作为输入基元

varying in vec2 value[3][2];

请注意数组索引的违反直觉的顺序!另请注意,必须使用整数常量显式指定数组维度。使用非常量整型变量或 gl_VerticesIn 会产生编译器错误。这两种说法都已在问题中提到的 MacBook Pro 型号上进行了测试。

关于arrays - 在 Mac 上将变化的数组从顶点传递到几何着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13069206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com