Three.js сбой текстуры dds

#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-карты». Я надеюсь, что это объяснение поможет.