【问题标题】:perspective correction, texture interpolation opengl透视校正,纹理插值opengl
【发布时间】:2012-05-27 01:24:37
【问题描述】:

1) 在opengl中,在纹理映射中,当你为两个不同的顶点指定纹理坐标时,对于中间的一个点,纹理坐标是否被插值,或者/和指定纹理坐标处的rgb值是否被插值?

2)另外,有人可以发布/链接到带有透视校正的纹理坐标插值的完整示例(带有实际坐标) - 世界顶点与纹理坐标相关联,转换为剪辑坐标,然后插值以找到其他纹理坐标?

【问题讨论】:

  • 我不确定您所说的第 1 部分是什么意思。如何在顶点上省略纹理或颜色?
  • 哦,好点,编辑问题

标签: math opengl graphics textures perspective


【解决方案1】:

在涉及纹理映射的所有 3D 渲染中,都会对纹理坐标进行插值,而不仅仅是这些点的纹理颜色。

我阅读了关于纹理映射的维基百科条目,我认为这是一个很好的介绍。 http://en.wikipedia.org/wiki/Texture_mapping

经过更多搜索,此链接似乎有工作 Java 代码说明您所追求的概念。

http://tech-lib.net/books/GetTopic2?bookName=Developing%20Games%20in%20Java&topicTitle=A%20Simple%20Texture-Mapper

我不确定你是在寻找 glsl 示例还是其他东西,所以我只是寻求最广泛适用的答案。

【讨论】:

  • 谢谢。维基百科说:“透视正确映射在除以深度 z 后进行插值”。如果深度 z 为 0 怎么办? opengl 使用什么比率进行插值?我知道光照计算在像素级别使用两个顶点之间的比率,而不是世界比率正确吗?这些链接很好,我仍在寻找代码之外的真实坐标的完整示例,包括纹理。
  • 链接中提到的 z 坐标是被转换到屏幕/剪辑空间的 z 坐标,并且是从该坐标到眼睛的距离。因为近剪裁平面总是 > 0,所以所有 z 坐标也总是 > 0。
  • opengl 着色器中透视(非线性)插值的魔力来自第四个坐标 W。(如 position.xyzw。)默认的“no-op”值为 w=1.0。 Z 坐标被丢弃(或被剪裁为 -1 到 +1)。但是 xyz 在进入屏幕空间的过程中都被 W 除。因此,在 W 上线性插值,然后除以它,得到透视,直线保持直线,等等。
猜你喜欢
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多