Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl Mipmap数组和详细级别之间有什么区别?_Opengl_Glsl_Mipmaps - Fatal编程技术网

Opengl Mipmap数组和详细级别之间有什么区别?

Opengl Mipmap数组和详细级别之间有什么区别?,opengl,glsl,mipmaps,Opengl,Glsl,Mipmaps,textureQueryLod调用返回两个组件: x-说明使用mipmap级别的比例 y-详细程度 它们都一样吗?当您遇到这样的问题,并且发现无法通过查看一类GLSL函数来充分回答时,您应该咨询 如果您阅读本规范,特别是第8.9.1节-纹理查询功能,您将看到关于“已使用”mipmap级别的非常详细的解释。简而言之,此值是在缩小+mipmap过滤期间用于选择最近的mipmap级别的分数分量 回想一下,解析mipmap示例有两种可能的方法: 在两个最近的mipmap LOD之间插值(线性mip过滤器

textureQueryLod调用返回两个组件:

  • x-说明使用mipmap级别的比例
  • y-详细程度

  • 它们都一样吗?

    当您遇到这样的问题,并且发现无法通过查看一类GLSL函数来充分回答时,您应该咨询

    如果您阅读本规范,特别是第8.9.1节-纹理查询功能,您将看到关于“已使用”mipmap级别的非常详细的解释。简而言之,此值是在缩小+mipmap过滤期间用于选择最近的mipmap级别的分数分量

    回想一下,解析mipmap示例有两种可能的方法:
  • 在两个最近的mipmap LOD之间插值(线性mip过滤器)

    • 这是三线性滤波器中的第三个线性滤波器

  • 采样最近的mipmap LOD(最近的mip过滤器)
  • 有了这些,您就应该有了理解第155页规范中所述伪代码的理论基础:

    float ComputeAccessedLod(float computedLod)
    {
    //根据纹理LOD钳制,钳制计算的LOD。
    如果(计算的LOD<纹理\u最小\u LOD)计算的LOD=纹理\u最小\u LOD;
    如果(computedLod>纹理\u最大\u LOD)computedLod=纹理\u最大\u LOD;
    //将计算的LOD钳制在可访问级别的范围内。
    如果(计算的LOD<0.0)
    计算的LOD=0.0;
    如果(计算的LOD>(浮点)
    maxAccessibleLevel)computedLod=(浮点)maxAccessibleLevel;
    //根据最小过滤器返回一个值。
    如果(纹理\u最小\u过滤器是线性的或最近的){
    返回0.0;
    }否则如果(纹理\u最小\u过滤器最近\u MIPMAP\u最近
    或线性(最接近的){
    返回ceil(计算的LOD+0.5)-1.0;
    }否则{
    返回计算的LOD;
    }
    }
    
    此伪代码中有三个分支:

  • 处理采样器根本不使用mipmapping的情况
    • 访问的LOD始终为0.0
  • 处理采样器使用最近的mip过滤器的情况
    • 访问的LOD是最接近的整数
  • 处理采样器使用线性mip过滤器的情况
    • 访问的LOD位于两个最近的整数LOD之间
    • 在这种情况下,将对两个LOD进行采样,并根据该值的小数部分在这两个LOD之间插入单个返回样本


  • textureQueryLod(…)
    返回的第二个组件是无采样整数LOD。

    当您遇到这样的问题,并且发现无法通过查看一类GLSL函数来充分回答时,您应该咨询

    如果您阅读本规范,特别是第8.9.1节-纹理查询功能,您将看到关于“已使用”mipmap级别的非常详细的解释。简而言之,此值是在缩小+mipmap过滤期间用于选择最近的mipmap级别的分数分量

    回想一下,解析mipmap示例有两种可能的方法:
  • 在两个最近的mipmap LOD之间插值(线性mip过滤器)

    • 这是三线性滤波器中的第三个线性滤波器

  • 采样最近的mipmap LOD(最近的mip过滤器)
  • 有了这些,您就应该有了理解第155页规范中所述伪代码的理论基础:

    float ComputeAccessedLod(float computedLod)
    {
    //根据纹理LOD钳制,钳制计算的LOD。
    如果(计算的LOD<纹理\u最小\u LOD)计算的LOD=纹理\u最小\u LOD;
    如果(computedLod>纹理\u最大\u LOD)computedLod=纹理\u最大\u LOD;
    //将计算的LOD钳制在可访问级别的范围内。
    如果(计算的LOD<0.0)
    计算的LOD=0.0;
    如果(计算的LOD>(浮点)
    maxAccessibleLevel)computedLod=(浮点)maxAccessibleLevel;
    //根据最小过滤器返回一个值。
    如果(纹理\u最小\u过滤器是线性的或最近的){
    返回0.0;
    }否则如果(纹理\u最小\u过滤器最近\u MIPMAP\u最近
    或线性(最接近的){
    返回ceil(计算的LOD+0.5)-1.0;
    }否则{
    返回计算的LOD;
    }
    }
    
    此伪代码中有三个分支:

  • 处理采样器根本不使用mipmapping的情况
    • 访问的LOD始终为0.0
  • 处理采样器使用最近的mip过滤器的情况
    • 访问的LOD是最接近的整数
  • 处理采样器使用线性mip过滤器的情况
    • 访问的LOD位于两个最近的整数LOD之间
    • 在这种情况下,将对两个LOD进行采样,并根据该值的小数部分在这两个LOD之间插入单个返回样本


  • textureQueryLod(…)
    返回的第二个组件是未采样整数LOD。

    它似乎是从这个ARB扩展中派生出来的:它的描述可能会为您解决这个问题,我不确定我是否能正确解释它。它似乎来自这个ARB扩展:它的描述可能会为您澄清问题,我不确定我是否能正确解释它。嗨,等等,这是因为x,y都指向mip贴图图像,唯一的区别是,x分量由上述伪代码处理,从而给出不同的mip映射级别。阅读这篇文章时,让我困惑的是LOD(它讨论的是几何体而不是纹理)。@abhijitjagdale:细节级别只是减少细节的一个通用术语。Mipmap级别基本上是细节级别的一种实现,但它们的作用更大