OpenGL - текс координата во фрагментном шейдере за пределами указанного диапазона - PullRequest
1 голос
/ 02 декабря 2019

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

Почему я получаю интерполированное значение за пределами указанного диапазона? В настоящее время я визуализирую вершины / фрагменты, подобные следующему изображению (https://learnopengl.com/Advanced-OpenGL/Anti-Aliasing):

enter image description here Если вместо этого я представляю прямоугольник, то если образец пикселя находится внутри прямоугольника, то интерполированная текстураКоордината должна быть не меньше 0, так как самый левый угол прямоугольника представляет 0, верно? Так как же мне получить значение меньше 0?

Редактировать: после некоторого базового тестирования это выглядит как фрагментшейдер вызывается, если фигура просто пересекает этот пиксель, а не если точка выборки пикселя находится внутри фигуры. Я проверил это, поместив начало прямоугольника немного раньше и чуть позже середины пикселя - когда немного позади серединыпиксель, я не получаю отрицательное значение, но если я помещу его немного после середины, то получаю отрицательное значение, что противоречит тому, что сказал сайт, на который я ссылался - возможно, это зависит от драйвера?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...