Поделиться через


LightsFixedCollection - класс

Обновлен: Ноябрь 2007

Определяет коллекцию источников света. Этот класс не может быть унаследован.

Пространство имен:  Microsoft.WindowsMobile.DirectX.Direct3D
Сборка:  Microsoft.WindowsMobile.DirectX (в Microsoft.WindowsMobile.DirectX.dll)

Синтаксис

'Декларация
Public NotInheritable Class LightsFixedCollection
'Применение
Dim instance As LightsFixedCollection
public sealed class LightsFixedCollection
public ref class LightsFixedCollection sealed
public final class LightsFixedCollection

Заметки

Этот класс выполняет математические операции с фиксированной запятой.

Примеры

В следующем примере кода показано, как использовать LightsFixedCollection данный класс.

' This code example is from the 
' Direct3D Mobile Fixed Point Lighting Sample
' of the .NET Compact Framework Samples in the SDK.

' The FrameMove method is called once per frame, 
' and is the entry point for animating the scene.

Public Sub FrameMove()
    lightData = device.LightsFixed(2)

    ' Rotate through the various light types
    If Fix(appTime) Mod 20 < 10 Then
        device.LightsFixed(2).Type = LightType.Point
    Else
        device.LightsFixed(2).Type = LightType.Directional
    End If

    ' Make sure the light type is supported by the device.  If 
    ' VertexProcessingCaps.PositionAllLights is not set, the device
    ' does not support point or spot lights, so change light #2's
    ' type to a directional light.
    If Not _
     device.DeviceCaps.VertexProcessingCaps.SupportsPositionalLights _
        Then
        If device.LightsFixed(2).Type = LightType.Point Then
            device.LightsFixed(2).Type = LightType.Directional
        End If
    End If

    ' Values for the light position, direction, and color
    Dim x As Single = System.Convert.ToSingle(Math.Sin(appTime * 2.0F))
    Dim y As Single = System.Convert.ToSingle( _
        Math.Sin(appTime * 2.246F))
    Dim z As Single = System.Convert.ToSingle( _
        Math.Sin(appTime * 2.64F))

    Dim r As Byte = System.Convert.ToByte((0.5F + 0.5F * x) * &HFF)
    Dim g As Byte = System.Convert.ToByte((0.5F + 0.5F * y) * &HFF)
    Dim b As Byte = System.Convert.ToByte((0.5F + 0.5F * z) * &HFF)
    device.LightsFixed(2).DiffuseColor = _
        ColorValueFixed.FromColor( _
        System.Drawing.Color.FromArgb(r, g, b))
    device.LightsFixed(2).Range = 100.0F

    Select Case device.LightsFixed(2).Type
        Case LightType.Point
            device.LightsFixed(2).Position = _
                New Vector3Fixed(4.5F * x, 4.5F * y, 4.5F * z)
            device.LightsFixed(2).Attenuation1 = 0.4F
        Case LightType.Directional
            device.LightsFixed(2).Direction = _
                New Vector3Fixed(x, y, z)
    End Select
    device.LightsFixed(2).Update()
End Sub
// This code example is from the
// Direct3D Mobile Fixed Point Lighting Sample
// of the .NET Compact Framework Samples in the SDK.

// The FrameMove method is called once per frame,
// and is the entry point for animating the scene.

public void FrameMove()
{
    lightData = device.LightsFixed[2];
    // Rotate through the various light types
    if (((int)appTime % 20) < 10)
        device.LightsFixed[2].Type = LightType.Point;
    else
        device.LightsFixed[2].Type = LightType.Directional;

    // Make sure the light type is supported by the device. If
    // VertexProcessingCaps.PositionAllLights is not set, the
    // device does not support point or spot lights, so change
    // light #2's type to a directional light.
    if
    (!device.DeviceCaps.VertexProcessingCaps.SupportsPositionalLights)
    {
        if (device.LightsFixed[2].Type == LightType.Point)
            device.LightsFixed[2].Type = LightType.Directional;
    }

    // Values for the light position, direction, and color
    float x = (float)Math.Sin(appTime*2.000f);
    float y = (float)Math.Sin(appTime*2.246f);
    float z = (float)Math.Sin(appTime*2.640f);

    byte r = (byte)((0.5f + 0.5f * x) * 0xff);
    byte g = (byte)((0.5f + 0.5f * y) * 0xff);
    byte b = (byte)((0.5f + 0.5f * z) * 0xff);
    device.LightsFixed[2].DiffuseColor =
        ColorValueFixed.FromColor(System.Drawing.Color.FromArgb(r,
        g, b));
    device.LightsFixed[2].Range = 100.0f;

    switch(device.LightsFixed[2].Type)
    {
        case LightType.Point:
            device.LightsFixed[2].Position =
                new Vector3Fixed(4.5f * x, 4.5f * y, 4.5f * z);
            device.LightsFixed[2].Attenuation1  = 0.4f;
            break;
        case LightType.Directional:
            device.LightsFixed[2].Direction =
                new Vector3Fixed(x, y, z);
            break;
    }
    device.LightsFixed[2].Update();
}

Иерархия наследования

System.Object
  Microsoft.WindowsMobile.DirectX.Direct3D.LightsFixedCollection

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

Платформы

Windows CE, Windows Mobile for Smartphone, Windows Mobile для карманных ПК

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Сведения о версии

.NET Compact Framework

Поддерживается в версиях: 3.5, 2.0

См. также

Ссылки

LightsFixedCollection - члены

Microsoft.WindowsMobile.DirectX.Direct3D - пространство имен

Другие ресурсы

Мобильное программирование Direct3D в .NET Compact Framework