Ошибка при попытке использовать mipmaping в three.js

Я пытаюсь использовать генерацию MIPMAP в three.js текстуры.

При создании текстуры я назначаю изображение размером 512x512 для mipmaps[0].
Таким образом, если я правильно понимаю, это изображение должно использоваться WebGL для создания текстур с меньшими размерами. Но потом я вижу чёрную текстуру и ошибки вроде этого:

в хроме

WebGL: drawElements: текстура, привязанная к единице текстуры 0, не подлежит визуализации. Это может быть не power-of-2 и несовместимая фильтрация текстур или не "текстура завершена". Или текстура типа Float или Half Float с линейной фильтрацией, в то время как расширение OES_float_linear или OES_half_float_linear не включено.

в Firefox

Ошибка: WebGL: текстура будет отображаться так, как если бы она была черной, в соответствии с разделом 3.8.2 спецификации OpenGL ES 2.0.24, потому что это 2D текстура, с минимизационным фильтром, требующим mipmap, и не mipmap завершить (как определено в разделе 3.7.10).

Код для создания текстуры выглядит так:

var texture = THREE.ImageUtils.loadTexture( 'images/512.png', undefined, function() {
    texture.repeat.set( 1, 1 );
    texture.mipmaps[ 0 ] = texture.image;
    texture.generateMipmaps = true;
    texture.needsUpdate = true;
};

Та же проблема с использованием холста вместо изображения.

Чтобы уточнить:

  • изображение сила-2
  • изображение уже загружено

Может кто-нибудь подсказать, куда копать эту проблему?

1 ответ

Решение

Задача решена. Я понял свою ошибку. Я был смущен пустым массивом mipmaps текстуры после рендеринга и решил, что mipmapping не работает. Фактически он должен быть пустым, поскольку webgl не возвращает сгенерированный стек изображений.

Другие вопросы по тегам