Рендеринг текстуры 1 в 1 в OpenGL

Итак, я хочу визуализировать текстуру на плоской плоскости, используя OpenGL и c ++, как способ показать изображение.

Однако мне нужно убедиться, что с текстурой ничего не сделано при рендеринге, т.е. сглаживание, интерполяция, сглаживание, размытие и т. д.

Это стандартный способ обработки текстур OpenGL? Или нужно установить какие-то флаги, чтобы отключить любую обработку?


person colossus47    schedule 16.01.2015    source источник
comment
Если вы визуализируете текстуру с тем же количеством пикселей, что и в текстуре, я думаю, вам просто нужно сместить рендеринг на 0,5 пикселя, чтобы вы рендерировали центр каждого пикселя. Если вы увеличиваете и уменьшаете масштаб текстуры, вам нужно будет указать GL_TEXTURE_MIN_FILTER и GL_TEXTURE_MAG_FILTER соответственно.   -  person Joseph Mansfield    schedule 16.01.2015
comment
... где соответственно означает GL_NEAREST   -  person leemes    schedule 16.01.2015
comment
Еще одна безумная идея: создать объект фреймбуфера, прикрепить изображение именно к текстуре, которую вы хотите нарисовать, а затем использовать glBlitFramebuffer.   -  person peppe    schedule 16.01.2015
comment
Почему вы не хотите использовать фильтрацию min и mag на вашей текстуре? Вы визуализируете двухмерные спрайты? Или сделать что-то вроде графического интерфейса? Если да, то приведенные выше ответы / комментарии должны вам помочь. Убедитесь, что вы установили фильтры min / mag на ближайшие и режимы обтекания в противном случае (по моему опыту), даже если вы не планируете их использовать, иначе текстура может быть неполной и может вообще не отображаться.   -  person Lloyd Crawley    schedule 16.01.2015
comment
Спасибо, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER и GL_NEAREST были тем, что я искал. Совет по смещению рендера на 0,5 пикселя и режиму обтекания также должны быть очень полезны. Я хотел сделать это, поскольку делаю размытые изображения и не хочу создавать ложное впечатление о разрешении камеры с помощью постобработки, так как любая фильтрация может создать ложное впечатление о разрешающей способности камеры.   -  person colossus47    schedule 16.01.2015
comment
@peppe Почему это может быть безумная идея? Это самое простое решение. См. stackoverflow.com/a/24278779/3530129.   -  person Reto Koradi    schedule 17.01.2015


Ответы (1)


Здесь сказано почти все: http://www.mindcontrol.org/~hplus/graphics/opengl-pixel-perfect.html.

Нет необходимости что-либо смещать на 0.5, если ваша матрица проекции является glOrtho эквивалентом, соответствующим разрешению пикселей области просмотра.

Вы можете найти интересный связанный / аналогичный вопрос: Идеальное 2D-рисование Opengl с пикселями

person rotoglup    schedule 16.01.2015