【问题标题】:Can we create texture views with 1 of the dim(width/height/depth) smaller than that of base texture but same number of mipmap levels and layers?我们可以创建一个比基础纹理更小的暗淡(宽度/高度/深度)但具有相同数量的 mipmap 级别和层数的纹理视图吗?
【发布时间】:2014-03-30 16:40:12
【问题描述】:

我知道我们可以使用某些 mipmap 级别和/或纹理层作为视图。

例如,如果我们有一个大小为 64x64 的纹理二维数组,具有 12 层和 7 个 mipmpap 级别,我可以创建如下视图:

  • 纹理 2d,大小为 64x64,具有 n 个 mipmap 级别(n = 0 到 6)。
  • 纹理 2d 大小为 16x16,具有 n 个 mipmap 级别(n = 0 到 4)。
  • 等等..

  • 纹理二维数组,大小为 64x64,具有 n 个 mipmap 级别(n= 0 到 6)和 x 层(x=0 到 11)

  • 纹理二维数组,大小为 32x32,具有 n 个 mipmap 级别(n= 0 到 5)和 x 层(x=0 到 11)
  • 等等..

但是 glTextureView 命令不会询问必须创建的视图的单个维度。是从我们选择的mipmap级别理解的吗?以上面的例子为例,我们不能创建一个大小为 64x32 和 7 个 mipmap 级别和 12 层的纹理 2D 视图吗? 即它将为所有 mipmap 级别和层使用原始纹理的一半子图像..?

【问题讨论】:

    标签: opengl textures glsl opengl-4


    【解决方案1】:

    不,GL_ARB_texture_view 不提供您正在寻找的功能(而且 GL 的其他功能也不提供)。你需要这个做什么?如果您只想使用纹理的子图像,则可以使用纹理坐标。

    【讨论】:

    • 我有一个程序可以在运行时创建数百个纹理,所有这些纹理都是随机大小的并且是只读的。我想使用纹理视图在它们之间最大程度地共享数据存储。我为大小为 1024x1024 的视图创建了 1 个大型存储,并希望所有其他较小的纹理(例如 500x500)使用原始纹理作为视图。我这样做了,GL 没有抱怨任何无效的操作错误。您的意思是我应该将较小的纹理调整为 512x512(是的,可以调整大小)并使用原始纹理的第二个 mipmap..?
    • 我编辑了我的答案,因为措辞不清楚。纹理视图是一种重新解释数据的方法。仅使用子区域不需要任何重新解释 - 您根本不需要不同的视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多