соответствие текселей и пикселей в OpenGL 3.x / 4x - PullRequest
0 голосов
/ 30 ноября 2018

Из того, что я прочитал в терминах соглашения о центре пикселей, OpenGL рассматривает центр пикселя в его полупиксельном местоположении .Это делает пиксельные центры для растеризации «совпадают» тексельные центры для текстурирования.

Итак, если выполняются следующие 4 условия:

  1. "world " система координат" в точности соответствует разрешению области просмотра (например, 1920x1080)
  2. проекция ортографическая (glm :: ortho)
  3. каждые ширина / высота текстуры соответствует 1 к 1 (от текселя к пикселю) тем, которые определены соответствующими вершинами кватерниона
  4. UV [0,1] используется дляотображение текстуры

затем:

  • соответствие между текселями текстуры и пикселями области просмотра будет 1-к-1 ?

  • нет необходимости добавлять / вычитать какие-либо поправки (+ / - 0,5 )?

  • есть идеи, как проверить, что это матч 1 к 1?

есть подсказки?

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете использовать функции частной производной в glsl.Производные функции с частичной разностью. Это инструкции фрагментирующего шейдера, которые можно использовать для вычисления скорости изменения любого значения относительно координат пространства экрана.Это любое значение может быть координатами текстуры. So

vec2 dx_vtc = dFdx (texture_coordinate);vec2 dy_vtc = dFdy (texture_coordinate);

float len1 = длина (dx_vtc);float len2 = length (dy_vtc);

Если разница в длине равна нулю, мы можем заключить, что отображение один в один.

...