Повторные текстуры с WebGL - PullRequest
       22

Повторные текстуры с WebGL

3 голосов
/ 10 октября 2011

Мне нужно повторить текстуру внутри одного элемента. Это вообще возможно в WebGL?

Я попробовал одно из следующих действий, но безуспешно.

ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_S, ctx.CLAMP_TO_EDGE);
ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.CLAMP_TO_EDGE);

ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_S, ctx.REPEAT);
ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_WRAP_T, ctx.REPEAT);

Спасибо за любую помощь!

Ответы [ 2 ]

5 голосов
/ 10 октября 2011

Важно знать, что эти параметры нужно настраивать для каждой текстуры, а не для глобальных настроек. Поэтому ваш код должен выглядеть примерно так:

gl.bindTexture(gl.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT);
// Set up more texture state, like filter modes...

Конечно, вам не нужно делать это при вызове teximage2D, важная часть заключается в том, что вы сначала привязали соответствующую текстуру. Если вы устанавливаете перенос таким образом, но он все еще не работает, вы можете увидеть ошибку драйвера.

Тем не менее, насколько я помню, режим обтекания текстур по умолчанию должен быть REPEAT, так что я не уверен, почему у вас будут проблемы.

1 голос
/ 28 февраля 2016

Некоторые комбинации браузер-ОС-ГП позволяют устанавливать gl.REPEAT только для двух текстур Это все еще относится к Safari-El Capitan-HD4000 с 2016 года.

...