Я использую gluPoject()
найти (winX
, winY
) пикселя координаты из (objX
, objY
, objZ
) мировые координаты, но проблема заключается в том, что gluProject()
возвращает значение (winX
, winY
GLdouble
), тогда как пиксельные координаты - int
.gluProject() окно координат целого значение
Я хочу знать, в каком сценарии мы должны взять floor(winX)
или ceil(winX)
для окончательной координаты пикселя?
Спасибо за ответ, но проблема с этим решением - конвейер OpenGL не округляет координаты пикселей в соответствии с этой функцией. Поэтому, если я использую эту функцию для определения конечной позиции пикселя для точки, это может быть случай, когда я могу довести свою точку до ближайшего пикселя. Например, моя точка (1,2,3), и ее (winX, winY) значение (2.3, 3.6). Поэтому я сопоставляю его с (2,4). Но когда я передаю эту точку OpenGL с использованием glBegin (GL_POINTS) API, он может сопоставляться с любым из (2,3) или (2, 4) или (3,3) или (3,4) в соответствии с собственным округлением OpenGL метод. Я хотел знать, как это работает OpenGL. – kshitij
@kshitij: Какие матрицы вы используете при рисовании точки как 'GL_POINTS'? Вы должны знать, что при типичной настройке 'glOrtho (0, w, 0, h, ...)' вы снова окажетесь с пиксельными центрами на 0,5, поэтому вам нужно добавить 0,5 к x и y после пола операция. Вы также должны знать, что использование мультисэмплинга усложняет ситуацию. – derhass