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