OpenGL 2D идеальный рендеринг

0

Я пытаюсь сделать 2D-изображение так, чтобы оно полностью покрывало все окно.
Для моего теста я настраиваю окно так, чтобы область клиента составляла ровно 320x240, а текстура тоже такого размера.
Я установил свою орфографическую проекцию для куба 1x1x1 с центром в начале координат и установил свой видовой экран на 0,0320,240
Текстура отображается в квадрат размером 1x1 с центром в начале координат.
Шейдер - это тривиальный шейдер, выполняющий ProjModelViewPos

Я создал тестовую текстуру, которая позволит мне проверить рендеринг, и я вижу постоянное несоответствие, которое я не могу поколебать.
Изображение 174551

Результаты рендеринга всегда имеют некоторое растяжение, которое помещает некоторые из пикселей вверх и справа от окна и, кажется, всегда на одну и ту же величину, независимо от размера окна (такое же количество пикселей, если я заменю 320x240 на другое стоимость)
Изображение 174551

Я думаю, что это связано с шириной оформления окна, но я не уверен, как ее исправить, чтобы решение не было специфичным для платформы/машины.

редактирует:
Код является прямым C++ с использованием freeglut и glew
Убедитесь, что этого не происходит, если я вызываю glutFullScreen, поэтому он определенно связан с окном.

  • 0
    Источник проблемы найден. Я устанавливал порт просмотра в начале инициализации, и некоторые функции библиотеки сбрасывали его в меньший видовой экран. Добавление вызова glViewport в цикл рендеринга решило проблему.
Теги:
opengl
rendering
textures
2d

1 ответ

3

Примечание: на этот ответ был добавлен языковой тег

Не уверен, какой модуль вы используете для этого. Если вы используете 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

  • 0
    Спасибо, но я использую C ++, а не Python

Ещё вопросы

Сообщество Overcoder
Наверх
Меню