1

这是我正在使用的库的参考

粘贴在opengl墙上时的纹理看起来分辨率低且质量差,我该如何改善它?

代码

ground->m_texture = new cTexture2D();
fileload = ground->m_texture->loadFromFile(RESOURCE_PATH("resources/images/shadow.bmp"));
ground->setUseTexture(true);
ground->m_texture->setSphericalMappingEnabled(true);//this line is for circular objects, but without it texture doesnt even show up

从一个例子 - 它应该如何看

在此处输入图像描述

在我的实现中看起来如何在此处输入图像描述

4

1 回答 1

3

好的,正在发生的事情如下:球面映射根据顶点到视口的向量和顶点处的法线生成纹理坐标,以将其映射到映射到鱼眼图像中的球面反射方向。由于您的几何图形看起来很平坦,因此此方法生成的纹理坐标的变化会很小,这意味着您在很大程度上放大了图像。如果现在您的纹理过滤模式设置为最近过滤,就会发生这种情况。

解决方案:不要使用球形纹理映射。如果要模拟反射,请使用立方体贴图(它们对于反射矢量中的小偏差表现得更好)并切换到线性过滤模式。

于 2012-09-18T13:52:11.643 回答