Я хотел бы получить очень простое объяснение, ПОЧЕМУ эти переменные не работают в «Android Studio» и как решить мою проблему (некоторые работают над « TheeBookOfShaders », некоторые работают над «* 1003»* Atom", другие работают на обоих, некоторые работают только на" ShaderToy", а некоторые работают только на" Android Studio").
* Чтобы действительно понять, это образец (из файла "фрагмент.glsl") *
uniform vec2 resolution; // [-] work on...
uniform vec2 uresolution; // [-] work on...
uniform vec2 iresolution; // [Y] work only on "ShaderToy"
uniform vec2 u_resolution; // [Y] work on "Atom" and "WebGL"
т.е. * Пример преобразования из "ShaderToy"TO "Атом" (живое кодирование) *
uniform vec2 iresolution; // is used on: "ShaderToy"
uniform vec2 u_resolution; // is used on: "Atom", "WebGL", etc.
так: [ iresolution = u_resolution ] * OK Работает *
* Ну, а теперь, почему в «Android Studio» (java code + фрагмент.glsl) ни один из них не работает?*
uniform vec2 resolution; // doesn't work on "Android Studio"
uniform vec2 uresolution; // doesn't work on "Android Studio"
uniform vec2 iresolution; // doesn't work on "Android Studio"
uniform vec2 u_resolution; // doesn't work on "Android Studio"
uniform vec2 vresolution; // doesn't work on "Android Studio"
uniform vec2 v_resolution; // doesn't work on "Android Studio"
и, очевидно:
vec2 A = (gl_FragCoord.xy / u_resolution); // doesn't work on "Android Studio"
vec2 A = (gl_FragCoord.xy / uresolution); // doesn't work on "Android Studio"
vec2 A = (gl_FragCoord.xy / *SOME*resolution); // doesn't work on "Android Studio"
и т. Д.
Та же ситуация с time var: время, время, время, время, время, время, время, глобальное время, и т. Д.
* Где найти точное ключевое слово для использования РАЗРЕШЕНИЕ / ВРЕМЯ/ other s системная переменная в файле шейдера GLSL "Android Studio"?*
"разрешение" Существует ли в настоящее время определенная справочная таблица, чтобы понять, как преобразовать системные переменные?
"разрешение"это системная библиотека или нет?
"Xresolution" Есть ли простая окончательная реальная схема, чтобы понять что-то в этой путанице?
, в этом примере мы видим ТОЛЬКО рабочую версию Xresolution - попробуйте дома
в этом другом примере, мы можем увидеть ВСЕ ДРУГИЕ версии Xresolution с желтым отказом - попробуйте дома
Тестовый файл "gment.glsl "работает на 100% на Atom-Editor (попробуйте на дому, пожалуйста)
#ifdef GL_ES
precision highp float;
#endif
uniform vec2 resolution; // not-system var
uniform vec2 uresolution; // not-system var
uniform vec2 iResolution; // system-var WORK 100% on ShaderToy
uniform vec2 vresolution; // not-system var
uniform vec2 u_resolution; // system-var WORK 100% on Atom-Editor but NOT on Android Studio
uniform vec2 i_resolution; // not-system var
uniform vec2 v_resolution; // not-system var
void main()
{
vec2 A = (gl_FragCoord.xy / u_resolution);
gl_FragColor = vec4(A.x, A.y, 0.0, 1.0);
}
* РЕШЕНИЕ |РАБОТАЙТЕ 100% ТОЛЬКО НА СТУДИИ ANDROID *
#ifdef GL_ES
precision highp float;
#endif
uniform vec2 u_resolution; // note: you can name it also "Pacman"...
// this mode let you can to create your
// personal var-name to access to windows view-port
void main()
{
// ---------------------------------------------------------------------------------
u_resolution = vec2(1920, 1080); // this assignment work 100% ONLY on Android Studio
// ---------------------------------------------------------------------------------
// --------------------------------------------------------------------------
vec2 A = (gl_FragCoord.xy / u_resolution); // solution 1
vec2 A = (gl_FragCoord.xy / vec2(1920, 1080)); // solution 2
vec2 A = (vec2(gl_FragCoord.x / 1920, gl_FragCoord.y / 1080)); // solution 3
// --------------------------------------------------------------------------
gl_FragColor = vec4(A.x, A.y, 0.0, 1.0);
}
Наконец мы нашли решение, всегда перед нашими глазами.Мы начинаем с окна, в котором размеры X и Y установлены равными 1920x1080 (в нашем случае нам больше ничего не нужно), и я указываю на 3 режима установки переменной " u_resolution ". ПРЕДУПРЕЖДЕНИЕ - эта функция работает ТОЛЬКО в Android Studio и может ответить на мои вопросы выше.Проблема была решена.Фелипе показал свою приверженность решению проблемы путем участия.Конечно, мы также можем установить это значение из основного кода через Java, C ++ или другие;но нам, в этом посте, было только интересно установить / получить эти " u_resolution " напрямую через / из GLSL .
Принятое решениеотлично отвечает потребностям отправления, и я надеюсь, что это будет полезно всем тем, кто придет за мной. Решение в три строки эквивалентно: выберите предпочитаемое
Отдельное спасибо @ felipe-gutierrez за любезное сотрудничество.