GLSL 字节顺序宏

GLSL endianness macro

有没有办法在 GLSL 中检查目标机器的字节顺序?例如在 OpenCL 中我可以使用

#ifdef __ENDIAN_LITTLE__
uint x = v << 1;
#else
uint x = v >> 1;
#endif

在 GLSL 4.60 规范中搜索“字节序”未找到任何匹配项。搜索“订单”只会显示不相关的结果。所以我想在 GLSL 中没有特殊的方法来查询 GPU 的字节顺序。

你最好的办法是在开始时用特制的着色器检测一次(比如,将提供的字节缓冲区作为一个 uint 读取并在输出片段中放​​入一个字节顺序相关的结果,然后 glReadPixels),然后根据结果,将适当的 #define 插入到依赖于此的着色器中即可。