Параметры WebGL texImage2D

1

Я пытаюсь загрузить файл изображения в мой код webGL и создать из него текстуру, но при загрузке изображения я получаю сообщение об ошибке:

Uncaught TypeError: Не удалось выполнить 'texImage2D' для 'WebGLRenderingContext': параметр 9 не относится к типу 'ArrayBufferView'. на изображение. (App.js: 13)

 var image = new Image();
 image.src = "./js-logo.png";
 image.addEventListener("load", function(){
     gl.bindTexture(gl.TEXTURE_2D, texture);
     gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 10, 10, 0, gl.RGBA, gl.UNSIGNED_BYTE, image);
     gl.generateMipmap(gl.TEXTURE_2D);
 });
Теги:
webgl

1 ответ

1

См. Спецификацию WebGL - 5.14 Контекст WebGL:

[...]
void texImage2D(GLenum target, GLint level, GLint internalformat,
                GLsizei width, GLsizei height, GLint border, GLenum format,
                GLenum type, [AllowShared] ArrayBufferView? pixels);
void texImage2D(GLenum target, GLint level, GLint internalformat,
                GLenum format, GLenum type, TexImageSource source); // May throw DOMException

Поскольку изображение является image, это TexImageSource оно должно быть

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 10, 10, 0, gl.RGBA, gl.UNSIGNED_BYTE, image); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);

Обратите внимание, что размер растрового изображения кодируется в объекте image.


Далее необходимо установить параметры фильтрации текстур:

var image = new Image();
image.src = "./js-logo.png";
image.addEventListener("load", function(){
     gl.bindTexture(gl.TEXTURE_2D, texture);
     gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 10, 10, 0, gl.RGBA, gl.UNSIGNED_BYTE, image);
     gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR );
     gl.texParameteri( gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR );
     gl.generateMipmap(gl.TEXTURE_2D);
 });
  • 0
    Да, я получил сообщение DOMException, в котором говорится, что изображение содержит данные из разных источников и не может быть загружено, даже если я не уверен, что это значит, стоит ли мне пытаться использовать другое изображение?
  • 0
    все та же ошибка
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню