模糊的Skybox纹理

时间:2013-02-28 06:48:45

标签: c++ graphics directx textures skybox

我渲染天空盒时遇到问题。我正在使用带有c ++的DirectX 11。图片太模糊了。我想我可能会使用太低分辨率的纹理。目前,对于天空盒的每个面,分辨率为1024x1024。我的屏幕分辨率是1920x1080。平均而言,我将始终盯着天空盒的一面,这意味着1024x1024的图片将被拉伸以填满我的屏幕,这就是它模糊的原因。我正在考虑使用2048x2048纹理。我创建了一个简单的天空盒纹理,它不再模糊。但我的问题是需要太多内存!仅仅为背景加载了近100MB的GPU。

我的问题是,是否有更好的方法来渲染天空盒?我在互联网上环顾四周,没有太多运气。有人说每张脸的标准是512x512。那么模糊是不可接受的。我想知道商业游戏如何做他们的天空盒?他们使用了巨大的纹理尺寸吗?特别是,对于那些看过它的人,我喜欢Dead Space 3空间环境。我想创造这样的东西。那他们是怎么做到的?

1 个答案:

答案 0 :(得分:1)

首先,像素密度不仅取决于纹理和屏幕的分辨率,还取决于视野。狭窄的视野将导致较少的天空盒填满屏幕,因此将更多地放大纹理,需要更高的分辨率。你没有确切地说你正在使用的FOV,但我有点惊讶1k纹理特别模糊,所以也许它有点偏窄?

哦,在我忘记之前 - 你应该使用压缩纹理...... 2k纹理不应该 可怕。

然而,除了改变分辨率(显然会很快开始在内存中刻录)之外,我通常总是将天空盒与一些简单的远处物体结合起来。

例如,在太空场景中,我可能会渲染一个相当简单的天空盒,它只包含星云等物,其中分辨率并不重要。我或许可以将至少一些恒星渲染为精灵,纹理密度可以局部更高。行星可以是纹理几何体。

如果我渲染的是更传统的户外场景,我可以在天空盒上渲染天空和云彩,但是可以在遥远的地平线上渲染几何体。天空中的月亮可能是一个叠加。

没有一个标准答案 - 根据具体情况,可以采用各种技术。