Я пытаюсь сделать 2D-изображение так, чтобы оно полностью покрывало все окно.
Для моего теста я настраиваю окно так, чтобы область клиента составляла ровно 320x240, а текстура тоже такого размера.
Я установил свою орфографическую проекцию для куба 1x1x1 с центром в начале координат и установил свой видовой экран на 0,0320,240
Текстура отображается в квадрат размером 1x1 с центром в начале координат.
Шейдер - это тривиальный шейдер, выполняющий ProjModelViewPos
Я создал тестовую текстуру, которая позволит мне проверить рендеринг, и я вижу постоянное несоответствие, которое я не могу поколебать.
Результаты рендеринга всегда имеют некоторое растяжение, которое помещает некоторые из пикселей вверх и справа от окна и, кажется, всегда на одну и ту же величину, независимо от размера окна (такое же количество пикселей, если я заменю 320x240 на другое стоимость)
Я думаю, что это связано с шириной оформления окна, но я не уверен, как ее исправить, чтобы решение не было специфичным для платформы/машины.
редактирует:
Код является прямым C++ с использованием freeglut и glew
Убедитесь, что этого не происходит, если я вызываю glutFullScreen, поэтому он определенно связан с окном.
Примечание: на этот ответ был добавлен языковой тег
Не уверен, какой модуль вы используете для этого. Если вы используете Pyglet, самый простой способ - это:
import pyglet
width = 320
height = 240
window = pyglet.window.Window(width, height)
image = pyglet.resource.image('image.png')
@window.event
def on_draw():
window.clear()
image.blit(0, 0, 0, width, height)
pyglet.app.run()
Вы можете найти более подробную информацию об этом здесь: http://www.pyglet.org/doc/programming_guide/size_and_position.html http://www.pyglet.org/doc/programming_guide/displaying_images.html