textureLod () возвращает 0, когда texelFetch () возвращает 1 [дубликат]

В вашем классе вы можете перегрузить символ "& lt;" оператор

  класс MyClass {bool operator & lt; (const MyClass & amp; rhs) {return this- & gt; key & lt;  rhs.key;  }}  
49
задан mk. 3 April 2011 в 22:16
поделиться

4 ответа

Координаты текстуры определяют точку в изображении текстуры, которая будет соответствовать вершине, для которой вы указываете. Подумайте о прямоугольном резиновом листе с напечатанным на нем текстурным изображением, где длина каждой стороны нормализована до диапазона 0-1. Теперь предположим, что вы хотите нарисовать треугольник, используя эту текстуру. Вы возьмете 3 булавки и поместите их в резиновый лист в позиции каждой из желаемых координат текстуры. (Скажите [0, 0], [1, 0] и [1, 1]), затем переместите эти контакты (не вынимая их) в нужные координаты вершин (скажите [0, 0], [0,5, 0] и [ 1, 1]), так что резиновый лист растягивается и изображение искажается. Это в основном то, как работают текстурные координаты.

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

@ b1nary.atr0phy Изображение для всех вас наглядных мыслителей!

105
ответ дан geofftnz 16 August 2018 в 01:47
поделиться
  • 1
    Аналогия штифтов замечательна. Я думал о том, чтобы растягивать и перемещать текстуру над квадом, а не квад «брать образец» из текстуры с использованием текстурных коордов. Благодарю. – mk. 4 April 2011 в 04:47
  • 2
  • 3
    Возможно, я ошибаюсь, но для webgl происхождение текстуры находится в левом верхнем углу, а не внизу слева. Я считаю, что это одно и то же для всех гл. Картина вызвала путаницу. – 0xcaff 7 June 2016 в 03:27
  • 4
    Я знаю, что это старый пост, но размеры текстуры больше не должны быть кратными двум. – SwiftsNamesake 12 October 2016 в 15:31
  • 5
    @SwiftsNamesake, который, вероятно, уже был верным, когда я написал этот ответ тоже ... Я пойду за этим. – geofftnz 15 October 2016 в 09:06

Для текстур 2D-изображений 0,0 в координатах текстуры соответствует нижнему левому углу изображения, а 1,1 в координатах текстуры соответствует верхнему правому углу изображения. Обратите внимание, что «нижний левый угол изображения» находится не в центре нижнего левого пикселя, а на краю пикселя.

Также интересно при загрузке изображений:

8.5.3 Структура изображения текстуры

Самым текстурным изображением (на которое ссылаются данные) является последовательность групп значений. Первая группа - нижний левый задний угол изображения текстуры. Последующие группы заполняют ряды ширины ширины слева направо; ряды высот складываются сверху вниз, образуя единый двумерный срез изображения;

Обратите внимание, что большинство форматов изображений имеют начало данных сверху, а не в нижней строке.

3
ответ дан Andreas Haferburg 16 August 2018 в 01:47
поделиться

OpenGL использует обратное текстурирование. Он берет координаты из мирового пространства (X, Y, Z) в пространство текстур (X, Y) в дискретное пространство (U, V), где дискретное пространство находится в области [0,1].

Возьмите многоугольник, подумайте об этом как лист бумаги. При этом:

  glTexCoord (0,0);  glTexCoord (0,1);  glTexCoord (1,1);  glTexCoord (1,0);   

Вы указываете OpenGL на весь лист бумаги. Когда вы применяете модификации, ваше текстурирующее пространство изменяется в соответствии с координатами ввода. Вот почему, например, когда вы делитесь, вы получаете одну и ту же текстуру дважды, вы указываете OpenGL отображать половину листа, а не весь лист бумаги.

8
ответ дан Cristina 16 August 2018 в 01:47
поделиться

Глава 9 Красной книги подробно объясняет это и доступна для бесплатного онлайн.

http://www.glprogramming.com/red/chapter09.html [ ! d2]

Координаты текстуры отображают x, y в пространство 0-1 по ширине и высоте пространства текстуры. Затем он растягивается, как резиновый лист над треугольниками. Это лучше всего объясняется фотографиями, и Красная книга делает это.

6
ответ дан dorbie 16 August 2018 в 01:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: