OpenGL ES3: не найдено соответствующей перегруженной функции для packUnorm2x16

#opengl-es #glsl #shader #glsles

#opengl-es #glsl #шейдер #glsles

Вопрос:

Я пытаюсь упаковать 2 значения с плавающей запятой в 1 значение uint, используя packUnorm2x16 метод OpenGL ES3 GLSL. Но компиляция шейдера завершается с 'packUnorm2x16': no matching overloaded function found ошибкой.

Это мой фрагментный шейдер:

 varying highp vec2 vDisplacement;

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

  

Я пытаюсь отобразить результат в текстуре GL_R32UI.

Комментарии:

1. packUnorm2x16 поддерживается начиная с OpenGL ES 3.0. Вы должны добавить квалификатор версии #version 300 es в первое удержание фрагментного шейдера.

Ответ №1:

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));
}