Динамическое включение/выключение сглаживания и теней в WebGLRenderer

Как я могу динамически включать и выключать сглаживание и тени в WebGLRenderer?

Простое изменение свойств сглаживания и shadowMapEnable не работает. Я посмотрел в исходниках и нашел метод updateShadowMap(), но он был удален в релизе 69.

ОБНОВЛЕНИЕ: Хорошо, ответ на вторую половину вопроса я нашел здесь https://github.com/mrdoob/three.js/issues/2466

В результате следующий код работает нормально:

renderer.shadowMapEnabled = false;

for(var i in tiles.children)
tiles.children[i].material.needsUpdate=true;

renderer.clearTarget( sun.shadowMap );

person NiSSaN    schedule 18.12.2014    source источник


Ответы (1)


Вы не можете включить/отключить сглаживание из контекста WebGL после создания. Единственный способ — создать новый контекст и снова отправить все буферы и текстуры.

Таким образом, в идеале вам нужно будет создать только новый WebGLRenderer с логическим значением сглаживания. Это пока не работает, но я работаю над тем, чтобы это заработало как можно скорее.

person mrdoob    schedule 18.12.2014
comment
Эй, я понимаю, что вы опубликовали это довольно давно. Это работает сейчас? Я хотел бы реализовать параметры динамического рендеринга на основе кадров в секунду. т.е. низкий fps = отсутствие АА и т.д. - person Spencer; 19.12.2015
comment
Теперь вы можете создать несколько WebGLRenderer, да. - person mrdoob; 11.01.2016