为什么在opengl对象上使用的纹理看起来质量差并且拉伸?

时间:2012-09-18 08:02:24

标签: opengl textures

以下是我正在使用的reference of library

粘贴在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

来自一个例子 - 它应该如何看待

enter image description here

它在我的实施enter image description here

中的表现

1 个答案:

答案 0 :(得分:3)

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

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