OpenGL ES3:未找到 packUnorm2x16 的匹配重载函数

OpenGL ES3: no matching overloaded function found for packUnorm2x16

我正在尝试使用 OpenGL ES3 GLSL 的 packUnorm2x16 方法将 2 个浮点值打包为 1 个 uint 值。但是着色器的编译失败并出现 'packUnorm2x16': no matching overloaded function found 错误。

这是我的片段着色器:

varying highp vec2 vDisplacement;

void main() {
  gl_FragColor = vec4(packUnorm2x16(vDisplacement), vec3(0.0));
}

我正在尝试将结果渲染为 GL_R32UI 纹理。

packUnorm2x16 自 OpenGL ES 3.0 起受支持。您必须将版本限定符 #version 300 es 添加到片段着色器的第一个留置权:

#version 300 es

varying highp vec2 vDisplacement;

void main() {
    gl_FragColor = vec4(packUnorm2x16(vDisplacement), vec3(0.0));
}