【问题标题】:GLSL-Only Texture Coordinates仅 GLSL 纹理坐标
【发布时间】:2013-06-29 23:54:51
【问题描述】:

有很多问题都与纹理坐标中的两个点有关,我的着色器已经使用这个概念。 1.0, 1.0 显示整个图像,而 1.0 / 帧在一维或另一个显示...的外观......好吧,不幸的是,它显示了四边形的 0.0 到帧分割的十进制值之间的所有内容。

我想做的是,从着色器中控制纹理坐标的所有四个点。在每个教程和每个示例中,纹理坐标 vec 始终是 vec2,这意味着您只能控制两个端点,而不是起点。有没有办法消除这个限制?

为了让您了解我为什么要这样做(如果还不是很明显的话),我想从一张较大的表格中挑选一个平铺或动画框架。

理想情况下,我还可以在着色器中找到图像的尺寸(宽度和高度),但如有必要,传递这些值并不难。我相信此时我' m 使用 GLSL 2,这意味着我无法在着色器中使用 textureSize2D 函数(已经尝试过了)。

【问题讨论】:

  • 对于每个顶点传递给着色器的两个 UV 坐标似乎存在严重误解。您可能需要重新阅读一些教程,或 google 那些特别涉及地图集映射的教程。
  • 您有没有机会为我指明正确的方向?我搜索了 GLSL 地图集映射、纹理地图集和常规地图集地图,但没有找到任何有用的信息。有什么我想念的吗?很多人提到它,但没有人说它是什么或它是如何工作的或类似的东西。

标签: opengl glsl


【解决方案1】:

将传递给纹理命令的 UV 坐标对简化意味着从纹理中读取一个点。只是一个点,不是一个区域。根据采样器状态以及是否发生缩小/放大,可以使用一个纹素来计算该点的值,但它仍然是一个与提供的 UV 相关的值。

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 2012-03-05
    • 2015-09-30
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多