Зажим режима адреса текстуры, как это работает? - PullRequest
0 голосов
/ 15 апреля 2011

Я пытаюсь понять, как работает сжатие текстур в OpenGL или любом другом API в этом отношении. Я осознаю тот факт, что вы определяете операцию как расширение диапазона от [0,1] до чего угодно, но прижимаете его к краю.

Итак, если у меня есть функция псевдокода:

unsigned int clampedTexel(float u, float v)<br> {<br> if(u < 0) u = 0;<br> if(u >= width) u = width-1;<br> if(v < 0) v = 0;<br> if(v >= height) v = height-1;<br> return image[u][v];</p> <p>}

http://wwwx.cs.unc.edu/~sud/courses/236/a6/small/tex_0_clamp.png

Правильно? Итак, если я выйду за пределы диапазона, например, 1.1 в направлении u, почему он не закреплен на черном цвете, который находится в конце? Вместо черного в этом примере он становится белым. Я что-то не так понял? Почему значение рядом с черным становится белым?

Или любое другое расширение, чередующееся с цветом края. Помогите мне увидеть, где я терплю неудачу, пожалуйста.

1 Ответ

4 голосов
/ 15 апреля 2011

Мне кажется, я вижу проблему.Вы упускаете из виду тот факт, что верхний ряд текстуры на самом деле представляет собой чередующуюся «белую / черную» линию, а не «черную / белую» линию, как кажется.Таким образом, верхний ряд, повторяющий белый / черный, является правильным.Аналогичная ситуация возникает на правом краю, где последний столбец повторяет белый / черный вниз, а не черный / белый.

Вот ваша текстура с ее контуром:

enter image description here

...