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

轮廓渲染

可以通过分层状态重写组件添加轮廓渲染,以可视方式突出显示选定的对象。 本章介绍了如何通过客户端 API 更改轮廓渲染的全局参数。

轮廓属性是全局设置。 使用轮廓渲染的所有对象都会使用相同的设置 - 无法使用按对象的轮廓颜色。

注意

轮廓呈现效果不能应用于点云。

OutlineSettings 的参数

OutlineSettings 保存与全局轮廓属性相关的设置。 此类公开以下成员:

参数 类型 描述
Color Color4Ub 用于绘制轮廓的颜色。 将忽略 alpha 部分。
PulseRateHz FLOAT 轮廓的每秒振荡频率
PulseIntensity FLOAT 轮廓脉冲效果的强度。 必须介于 0.0(无脉冲)与 1.0(全脉冲)之间。 强度将轮廓的最小不透明度隐式设置为 MinOpacity = 1.0 - PulseIntensity
MaskTexture 2D 纹理 如果指定,则轮廓的颜色按此纹理着色。 纹理以屏幕空间坐标采样,并且有多种参数(MaskScaleMaskScaleToFitMaskOffsetMaskScrollSpeedMaskRotationCenterMaskRotationAngleMaskRotationSpeed)会影响该映射的拉伸、旋转和滚动。 此功能可用于实现颜色渐变或虚线轮廓等效果。 请参阅下面的第二个示例图像。

使用不同轮廓参数渲染三次的对象color 参数从黄色(左)更改为品红(中间)并将 pulseIntensity 从 0 更改为 0.8(右)后的效果。

一个经过两次渲染的对象,展示了轮廓纹理遮罩的不同用例 将遮罩纹理应用于轮廓的效果:屏幕对齐的颜色渐变(左)或使用带条纹的平铺纹理模拟的虚线轮廓(右)。

示例

以下代码展示了一个通过 API 设置轮廓参数的示例:

void SetOutlineParameters(RenderingSession session)
{
    OutlineSettings outlineSettings = session.Connection.OutlineSettings;
    outlineSettings.Color = new Color4Ub(255, 255, 0, 255);
    outlineSettings.PulseRateHz = 2.0f;
    outlineSettings.PulseIntensity = 0.5f;
}
void SetOutlineParameters(ApiHandle<RenderingSession> session)
{
    ApiHandle<OutlineSettings> outlineSettings = session->Connection()->GetOutlineSettings();
    Color4Ub outlineColor;
    outlineColor.channels = { 255, 255, 0, 255 };
    outlineSettings->SetColor(outlineColor);
    outlineSettings->SetPulseRateHz(2.0f);
    outlineSettings->SetPulseIntensity(0.5f);
}

性能

轮廓渲染可能会对渲染性能产生重大影响。 这种影响根据给定帧的选定对象与非选定对象之间的屏幕空间关系而异。

API 文档

后续步骤