【问题标题】:DirectX Device OptionsDirectX 设备选项
【发布时间】:2011-12-08 03:01:12
【问题描述】:

如今几乎所有游戏都有视频选项菜单,您可以在其中选择纹理质量、着色器、阴影、分辨率等。我只是想知道如何找到可用选项? (例如,如果用户的屏幕是 1080x1050,则不应该有 1920x1200 分辨率的选项)

如果这不是它的工作原理,我是否必须构建一个功能列表并只允许用户选择其中任何一个?我该怎么做?顺便说一句,我正在使用 C++。

【问题讨论】:

  • 您通常会根据您测试过的配置提供选项,具体取决于您的目标分布。您支持的最低硬件通常定义低端设置到最高设置,这些设置通常利用最新的可用硬件。也就是说,出于学习目的,或者如果您不是在为游戏工作室工作而发布游戏,那么在您拥有游戏之前,我最初不会为这种支持而烦恼。
  • 所以你是说我不应该实现优化选项?
  • 我说这可能有点为时过早。我假设您正在从头开始编写游戏引擎。我相信在我的第一款 DirectX 游戏中,我只是将分辨率硬编码为 800x600,这样我就可以继续处理重要的部分了。
  • 你可能是对的。我只想勾勒出基本框架。我想创建一个占位符,以便以后更容易添加此功能。但我想我应该先创建一个工作原型,然后再尝试优化它。

标签: c++ menu directx device options


【解决方案1】:

根据 cmets,听起来您暂时不会做任何事情,但如果/当您这样做时,没有魔杖,您必须单独处理所有选项,并且它取决于您支持的功能。

例如,对于纹理,“低”选项可能意味着您不加载最高的 mip,而是从第二高的开始。

您可以对模型的 LOD 执行类似的操作。

很多选项都是着色器的版本。因此,您可以编写一个支持四个动态灯的着色,另一个支持一个的版本和一个不支持的第三个版本。然后你有其他选择,比如纹理通道的数量和阴影生成技术。这导致着色器版本的组合爆炸。因此,大多数游戏都会有一种将着色器代码块拼接在一起的方法,以形成他们想要的每个模型和质量设置的选项组合。

屏幕分辨率选项是最直接的。根据您使用的 DirectX 版本,您可以调用不同的函数来枚举设备支持的全屏模式。例如,DirectX 9 上的 EnumAdapterModes 和 DirectX 10 上的 EnumAdapters

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多