【问题标题】:Drawing pixel-perfect texture part绘制像素完美的纹理部分
【发布时间】:2014-02-18 17:15:48
【问题描述】:

是否有可能使用 glTexCoord2f() 以某种方式获得像素完美的精度?例如,假设我已将 512x512 纹理绑定到 OpenGL 上下文,现在我想从该纹理内部绘制任意区域作为四边形。我们还假设我要绘制的区域使用了非常奇怪的偏移量和尺寸,它们不是纹理大小的倍数。例如:

Texture size: 512x512
Area inside the texture that I want to draw: X=131 Y=159 Width=243 Height=33

问题是 glTexCoord2f() 期望值在 0 到 1 的范围内,所以我不得不做一些浮点运算来将像素值转换为从 0 到 1 的浮点值,我担心在整数到浮点数的转换过程中,像素完美的精度可能会丢失。我知道如果你坚持使用纹理大小的倍数,即具有 16x16、32x32、64x64 或类似大小的项目的精灵表,那么这种转换不会成为问题,但是如何解决纹理中真正的任意偏移量呢?像素完美在这里可能吗?

【问题讨论】:

  • ARB_texture_rectangle?
  • 似乎可以完成这项工作。那么有没有办法不求助于扩展呢?

标签: opengl


【解决方案1】:

这不是一个解决方案,只是一个已经使用了很长时间的解决方法:

图集中的精灵通常用 1px 透明边框填充,这样浮点错误就不会被发现。

我们使用了 1024x1024 的图集和 32x32 的图块,即便如此,我们在某些特定的相机偏移处也存在边缘错误。

【讨论】:

  • 这将是一种解决方法。我正在寻找一种没有任何特殊对齐方式以避免浮点错误的解决方案...
猜你喜欢
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2013-10-22
  • 2011-08-11
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
相关资源
最近更新 更多