【发布时间】:2019-10-23 19:41:46
【问题描述】:
在 OSX(原始分辨率为 2560 x 1600)上,Gloss 以 2 倍的缩放系数显示所有内容。 为 display 函数提供 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 应该可以解决问题。
【问题讨论】:
-
我建议您发布您发现的解决方案作为答案。
标签: haskell gloss juicy-pixels