#three.js #textures #webgl #dds-format
#three.js #Текстуры #webgl #dds-формат
Вопрос:
Я загружаю свои 3D-модели с помощью JSONLoader. Поскольку я хочу улучшить производительность загрузки, я преобразовал текстуры в формат DDS (используя плагин Gimp). Но я не могу избавиться от этой проблемы:
GL_INVALID_ENUM : glActiveTexture: texture was GL_FALSE three.min.js:477
WebGL: drawElements: texture bound to texture unit 0 is not renderable.
It maybe non-power-of-2 and have incompatible texture filtering or is not
'texture complete'. Or the texture is Float or Half Float type with linear
filtering while OES_float_linear or OES_half_float_linear extension is not enabled.
three.min.js:477
GL_INVALID_ENUM : glActiveTexture: texture was GL_LINES
Каждая сторона текстуры уже равна степени двойки. Есть идеи о том, в чем проблема?
редактировать: я нашел несколько возможных решений WebGL, но поскольку я не использую шейдеры, мне было интересно, есть ли какое-либо решение с Three.js
Комментарии:
1. Я не знаю three.js но конкретное средство ошибки
gl.activeTexture
было вызвано с0
помощью вместоgl.TEXTURE0
2. работает ли это, если ваши текстуры не в формате dds?
3. Да, он отлично работает с текстурами в формате jpg.
4. у меня возникли проблемы с выбором формата и сохранением mip-карт с помощью этого плагина nvidias для photoshop, вы создаете mip-карты?
5. В качестве формата я выбираю BC3 / DTX5 без mip-карт (как упоминалось ранее, я использую Gimp).
Ответ №1:
Мне удалось решить проблему, создав mipmaps для каждой преобразованной текстуры. Вкратце: используйте Gimp DDS exporter со сжатием BC3 / DTX5 и выберите опцию «генерировать mip-карты». Я надеюсь, что это объяснение поможет.