如果这是我创建的纹理,我只需将其internalFormat设为GL_SRGB
。但是我将Qt Quick Item
foo
传递到我的自定义QQuickFramebufferObject
GL代码中,我在其中foo->textureProvider()->texture()
使用该纹理进行渲染。
那么我可以对纹理进行滤波(当双线性采样时)是伽马校正的吗?
注意:我知道我可以用4个纹理水龙头和lerping实现手动双线性过滤,但这会对性能造成一定影响,所以我正在寻找更好的方法。
或者我可以从Qt Quick纹理到我自己的GL_SRGB
纹理,然后使用该纹理,但这更复杂,并且每次更新源纹理时都需要发生,伤害性能(和RAM使用)。
我已经搜索了谷歌寻找钩子Qt可能提供配置这个,但除了QQuickTextureFactory之外什么都没找到,但是,这不能解决我的问题,至少是AFAICS。
我需要支持OpenGL ES 2.0。
答案 0 :(得分:0)
注意:我知道我可以用4个纹理水龙头和lerping实现手动双线性过滤,但这会对性能造成一定影响,所以我正在寻找更好的方法。
嗯,从过滤后的结果颜色来看,即使您知道插值因子,也根本无法找回用作输入的原始颜色。
或者我可以从Qt Quick纹理到我自己的GL_SRGB纹理,然后使用该纹理,但这更复杂,并且每次更新源纹理时都需要发生,从而损害性能(和RAM使用情况)。
此策略的更有效变体是在纹理数据上创建第二个视图,格式为SRGB
(参见GL_ARB_texture_view extension,核心自GL 4.3),这完全避免了复制和额外的RAM使用。