Почему Gloss не рендерит в родном разрешении?

В OSX (с собственным разрешением 2560 x 1600) Gloss отображает все с коэффициентом масштабирования 2x. При назначении размера окна 300 x 300 для функции отображения создается окно 600 x 600. Весь контент в этом окне также в два раза больше (в каждом измерении), независимо от того, нарисован ли он с помощью Gloss или загружен как спрайт (I'). Я использую Juicy для этого). Уменьшение содержимого не дает такого же чистого результата, как при отображении в реальном собственном разрешении. Есть ли способ сделать рендер Gloss в полном родном разрешении?

Я все еще новичок в Gloss и надеюсь, что не пропустил ничего очевидного.

Вот код...

module Main where

import Graphics.Gloss
import Graphics.Gloss.Juicy
import Codec.Picture

main :: IO ()
main = loadJuicy "someimg.png" >>= maybe ( print "Nope" ) displayImg

displayImg :: Picture -> IO () 
displayImg p = display ( InWindow "Image" ( 300, 300 ) ( 100, 100 ) ) white ( pictures [ p, translate 32 32 $ circleSolid 4 ] )

... и соответствующий рендер:

Обновление: это, кажется, общая проблема с OpenGL и дисплеями сетчатки (фактически способ, которым пиксели OSX рассчитываются внутренне). Поскольку, как я понимаю, Gloss на самом деле не разрешает доступ на низком уровне, я думаю, что это невозможно исправить.

Обновление 2: похоже, это особая проблема с GLUT в качестве основного бэкэнда для Gloss. Восстановление Gloss, включающее GLFW и отключающее GLUT, должно решить эту проблему.

1 ответ

Блеск может использоваться с собственным разрешением под OSX с hdpi-дисплеем, когда сервер GLUT по умолчанию заменен на GLFW. Для этого перестройте Gloss с соответствующими флагами:

cabal install -f -GLUT -f GLFW

(Примечание: с GLFW я больше не мог использовать некоторые модули в Gloss, например, Gloss.Data.Picture или, что еще важнее, Graphics.Gloss.Juicy. Хотя работает только Graphics.Gloss.Rendering. Относительно разрешения: убедитесь, что нарисовали ваши фотографии размером с фрейм-буфер, а не с размером окна, так как они могут отличаться.)

Другие вопросы по тегам