Неожиданная растянутая текстура - PullRequest
0 голосов
/ 13 декабря 2010

У меня есть следующие фрагменты кода:

    ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_MAG_FILTER, ctx.LINEAR);      
    ctx.texParameteri(ctx.TEXTURE_2D, ctx.TEXTURE_MIN_FILTER, ctx.LINEAR);

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

Размер моей текстуры: 256x256 .

Опция 1 - мой многоугольник

    const x0 = 100;
const x1 = -x0;
const z0 = x0;
const z1 = -z0;
var vertices = new Float32Array(
    [  x0, 0, z1,  x1, 0, z1,  x1, 0, z0,   x0, 0, z0]);

Результат: текстура растянута, поэтому я теряю детализацию.

Вариант 2 - мой многоугольник (обратите внимание, что этот многоугольник намного меньше, чем параметр1)

const x0 = 5;
const x1 = -x0;
const z0 = x0;
const z1 = -z0;
var vertices = new Float32Array(
    [  x0, 0, z1,  x1, 0, z1,  x1, 0, z0,   x0, 0, z0]);

Результат: я вижу детали своей текстуры.

Насколько я понимаю, опция REPEAT (TEXTURE_WRAP_S и TEXTURE_WRAP_T) даст мне детали даже в варианте 1Почему текстура растянута в варианте 1?Я неправильно понял?

Это работает WebGL на сборке Chrome Canary.

Что я сделал не так?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 17 декабря 2010

Я изменил мою текстурную координату следующим образом:

Код: var texCoords = new Float32Array ( // [1, 1, 0, 1, 0, 0, 1, 0]
[100, 100, -100, 100, -100, -100, 100, -100]
);

Соответствует большой координате многоугольника. Он показывает детали исходной маленькой текстуры на большом полигоне.

Подробнее см. Форум Khronos WebGL

...