【问题标题】:SDL2 render without pixel units没有像素单位的 SDL2 渲染
【发布时间】:2014-11-14 23:42:42
【问题描述】:

我来自 OpenGL,但它对我来说有点低级,所以现在我想使用普通的 SDL2 来开发一个基于小图块的游戏。 我想问我如何像在OpenGL中那样独立绘制像素? 我的意思是,在 OpenGL 中总是有坐标系:“左 -1,右 1,上 -1,下 1”,我可以用浮点完全独立的像素来绘制东西。 但现在在 SDL2 中,我只能以像素为单位进行渲染。 我不喜欢这样,所以我寻找一种方法,我如何才能获得通常的 OpenGL 感觉。

感谢阅读!

【问题讨论】:

  • “独立”坐标系实际上只是映射到像素,但在此过程中会出现舍入误差。如果确实需要使用 [0.0f, 1.0f] 坐标系,请编写一个辅助类并自行转换为最近的像素(或最近的 pow2 像素)。会干净很多。
  • 顺便说一下,您对 OpenGL 坐标系(更广为人知的标准化设备坐标)的描述是倒退的(-1 是底部)。

标签: opengl sdl sdl-2


【解决方案1】:

这些是标准化的设备坐标。

它们将您的 视口 的角映射到范围 [-1,1]。您需要做的就是实现自己的映射。我已经在another similar question 中直观地解释了这一点。

你想去另一个方向,所以你会使用:

屏幕X = (NDCX * 0.5 + 0.5) * 视口W + 视口X

屏幕Y = (NDCY * 0.5 + 0.5) * 视口H + 视口Y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多