gpt4 book ai didi

haskell - 为什么 Gloss 不能以原始分辨率渲染?

转载 作者:行者123 更新时间:2023-12-02 00:52:30 25 4
gpt4 key购买 nike

在 OSX(具有 2560 x 1600 原始分辨率)上,Gloss 以 2 倍的缩放系数显示所有内容。
为 display 函数提供 300 x 300 的窗口大小会创建一个 600 x 600 的窗口。该窗口中的所有内容也是两倍大(在每个维度上),无论是使用 Gloss 绘制还是作为 Sprite 加载(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 ] )

...和相应的渲染:

Screenshot of the render

更新:
这似乎是 OpenGL 和视网膜显示器的普遍问题(实际上是内部计算 OSX 像素的方式)。因为,据我了解,Gloss 并没有真正允许低级访问,我的猜测是这是不可修复的。

更新 2:
这似乎是 GLUT 作为 Gloss 的底层后端的一个特殊问题。重建 Gloss 启用 GLFW 并禁用 GLUT 应该可以解决问题。

最佳答案

当默认的窗口管理后端 GLUT 被替换为 GLFW 时,Gloss 可以在 OSX 下使用 hdpi-display 与 native 分辨率一起使用。为此,请使用适当的标志重建 Gloss:
cabal install -f -GLUT -f GLFW
(注意:使用 GLFW,我无法再使用 Gloss 中的某些模块,例如 Gloss.Data.Picture 或更重要的是 Graphics.Gloss.Juicy。但仅使用 Graphics.Gloss.Rendering 有效。与分辨率相关:确保绘制您的图片在帧缓冲区的大小中,而不是窗口大小,因为它们可能会有所不同。)

关于haskell - 为什么 Gloss 不能以原始分辨率渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com