После беспорядка с this demo of Three.js rendering a scene to a texture я успешно воспроизвел его суть в моем проекте: среди моей основной сцены теперь есть сфера, а на ней нарисована вторичная сцена через буфер THREE.WebGLRenderTarget
,Сцена рендеринга на пользовательскую сетку с тэгом.
Мне действительно не нужна сфера, и вот где я ударил огромную кирпичную стену. При попытке отобразить буфер на мой простой пользовательский сетки, я получаю бесконечный поток из следующих ошибок:
three.js:23444 WebGL: INVALID_VALUE: pixelStorei: invalid parameter for alignment
three.js:23557 Uncaught TypeError: Cannot read property 'width' of undefined
Моя геометрия, аппроксимации annular форму, создается с помощью this code. Я успешно UV-сопоставил canvas
на нем, передав {map: new THREE.Texture(canvas)}
в опции материала, но если я использую {map: myWebGLRenderTarget}
, я получу ошибки выше.
Беглый взгляд через стек вызовов делает его похожим Three.js приобретает наличие атрибута texture.image
на myWebGLRenderTarget
и попытке вызова clampToMaxSize
на него.
Это ошибка в three.js или я просто делаю что-то неправильно? Поскольку мне нужен только плоский рендеринг (с MeshBasicMaterial
), одно из первых, что я делал при адаптации демонстрации рендеринга к текстуре выше, - это удалить все следы шейдеров, и он отлично справился с сферой. Нужны ли мне эти шейдеры, чтобы использовать UV-отображение и пользовательскую сетку?
Ницца, это исправлено для меня. '.needsUpdate' автоматически устанавливается в true при создании нового материала. – dpren
Я немного почесывал голову, делая ту же глупую ошибку. Благодаря! – grouma