Интересно, как я могу получить любой экземпляр программы WebGL (WebGLProgram
) из любого желаемого контекста WebGL?Как получить объект WebGLProrgram из уже созданного контекста WebGL?
Чтобы получить контекст WebGL, НЕ является проблемой. Вы ищете в DOM текущей страницы для графического элемента с помощью document.getElementsByTagName()
или document.getElementById()
, если вы знаете точный холст ID:
let canvas = document.getElementById("canvasId");
let context = canvas.getContext("webgl");
Здесь мы извлекаем текущий контекст, как я полагаю, но если я хочу, чтобы получить некоторые параметры шейдера или получить определенное значение из уже запущенного вершинного/фрагментарного шейдера - мне нужно иметь программу WebGL, связанную с текущим контекстом рендеринга WebGL.
Но я не могу найти какой-либо метод в API WebGL, например context.getAttachedProgram()
или context.getActiveProgram()
.
Так как же получить активную программу WebGL, которая используется для процесса рендеринга? Может быть, есть какой-то специальный параметр WebGL?
мужчина, это здорово! замечательный ответ! 5 звезд! Спасибо за помощь. Моя цель - обеспечить возможность отладки любой программы WebGL (из трех. Js, babylon.js или другой структуры). Также, кстати, вы рассказали об инспекторе WebGL. Этот плагин (не знаю почему) не может распечатать информацию об отладке моего контекста, не знаю даже почему. –