你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Single-sided渲染

大多数呈现器使用背面剔除来提高性能。 但是,在使用剪切平面来切开网格时,用户常常将查看三角形的背面。 如果这些三角形被剔除,那么结果看起来没有说服力。

要可靠地避免这一问题,三角形的两面都需要渲染。 由于不使用背面剔除会影响性能,因此默认情况下,Azure 远程渲染仅在处理与剪切平面相交的网格时才切换到双面渲染。

通过“single-sided渲染”设置,可自定义此行为

注意

single-sided渲染设置是一项实验性功能。 未来可能会再次将其移除。 请勿更改默认设置,除非它确实解决了应用程序中的关键问题。

先决条件

single-sided渲染设置仅对在 opaqueMaterialDefaultSidedness 选项设置为 SingleSided 的情况下转换的网格有效。 此选项默认设置为 DoubleSided

Single-sided渲染设置

有 3 种不同的模式:

正常: 在此模式下,网格始终在转换时呈现。 这意味着如果在 opaqueMaterialDefaultSidedness 设置为 SingleSided 的情况下转换网格,则即使这些网格不与剪切平面相交,也始终会在启用背面剔除后渲染它们。

DynamicDoubleSiding: 在此模式下,当剪切平面与网格相交时,它会自动切换到双面呈现。 此模式是默认模式。

AlwaysDoubleSided: 强制所有单面几何图形始终呈现双面。 此模式大多是公开的,因此你可轻松比较single-sided渲染与double-sided渲染之间的性能影响。

可按如下所示更改single-sided渲染设置:

void ChangeSingleSidedRendering(RenderingSession session)
{
    SingleSidedSettings settings = session.Connection.SingleSidedSettings;

    // Single-sided geometry is rendered as is
    settings.Mode = SingleSidedMode.Normal;

    // Single-sided geometry is always rendered double-sided
    settings.Mode = SingleSidedMode.AlwaysDoubleSided;
}
void ChangeSingleSidedRendering(ApiHandle<RenderingSession> session)
{
    ApiHandle<SingleSidedSettings> settings = session->Connection()->GetSingleSidedSettings();

    // Single-sided geometry is rendered as is
    settings->SetMode(SingleSidedMode::Normal);

    // Single-sided geometry is always rendered double-sided
    settings->SetMode(SingleSidedMode::AlwaysDoubleSided);
}

API 文档

后续步骤