Ошибка при попытке использовать 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 не возвращает сгенерированный стек изображений.