gpt4 book ai didi

c++ - 在顶点着色器中将纹理数据解释为顶点数据

转载 作者:行者123 更新时间:2023-11-30 00:56:51 26 4
gpt4 key购买 nike

我正在尝试使用顶点着色器重新定位粒子(存储在纹理中),这些粒子被传递到片段着色器并存储在单独的纹理中。

我正在尝试完全在 GPU 上实现高效的空间合并。这是用于 SPH 流体模拟。

是否可以将 2D 纹理的所有像素(文本)传递给顶点着色器?每个文本元素 (RGBA) 将被重新解释为传入的顶点 (XYZW)。

最佳答案

如果硬件支持,则可以将 2D 纹理传递给顶点着色器 Vertex Texture Fetch .您可以使用以下代码对此进行测试:

int maxVertexTextureImageUnits;
glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &maxVertexTextureImageUnits);

如果 maxVertexTextureImageUnits 为零,则不支持此功能。

您不直接将纹理作为顶点数据传递,而是创建一个顶点网格,其坐标对应于纹理中每个像素的纹理坐标。然后在顶点着色器中,您使用这些顶点来读取在片段着色器中生成的实际顶点坐标(纹素值)。然后将这些用于计算 gl_Position

我个人从未使用过此功能(我的平台不支持),但我看过很酷的粒子/流体演示。我相信对它的支持参差不齐。即使在支持它的硬件上,驱动程序也可能无法实现它。

关于c++ - 在顶点着色器中将纹理数据解释为顶点数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9354451/

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