如何将浮动矩阵作为2D纹理传递给片段着色器?

时间:2014-10-01 19:45:31

标签: opengl

我有一个存储在

中的nr x nc浮点值矩阵
std::vector<float> data;

如何将此矩阵作为2D纹理传递给片段着色器?

我应该使用哪种内部格式和格式作为glTexImage2D()的参数?

我需要设置

吗?
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);

BTW:我不明白GL_UNPACK_ALIGNMENT和GL_PACK_ALIGNMENT之间的区别。 我的数据紧凑(alignment = 1)。一个命令应该足以告诉OpenGL这个。

1 个答案:

答案 0 :(得分:1)

对于具有任意浮点数的通用矩阵,以及需要32位精度的地方,我建议使用单通道32位浮点格式作为内部格式。你没有指定你所针对的OpenGL版本,所以我假设#34;相当现代&#34;,所以内部格式应该设置为GL_R32F。作为格式,您希望显然使用GL_FLOAT,因为该参数描述了客户端数据所在的格式。

在这种情况下,你可以将GL_UNPACK_ALIGNMENT设置为任何有效值&lt; = 4(这也是默认值),因为float总是4个字节,因此每行浮点数总是4的倍数

GL_PACK_ALIGNMENT完全不相关。它定义了回读(&#34;打包&#34;)像素数据的对齐方式。