Gewusst wie: Konvertieren von Direct3D-Desktopanwendungen

Aktualisiert: November 2007

Sie können eine vorhandene verwaltete Direct3D-Anwendung, die für einen Desktopcomputer entwickelt wurde, so modifizieren, dass sie auf einem mobilen Gerät ausgeführt wird. In den folgenden Bereichen müssen Sie Änderungen vornehmen:

  • Verweise auf Komponenten und Namespaces.

  • Änderungen am Device-Konstruktor und an den Konstruktoren anderer Objekte.

  • Entfernen nicht unterstützter Funktionen.

  • Ressourcenoptimierungen. Informationen über das Entwickeln von Direct3D-Anwendungen (für mobile Geräte), die eingeschränkte Ressourcen effektiv nutzen, finden Sie unter Verwalten von Geräteressourcen.

Hinweis:

Für verwaltete Direct3D Mobile-Anwendungen ist Windows Mobile, Version 5.0, für Pocket PCs und Smartphones erforderlich. Informationen über Windows Mobile-Software und SDKs finden Sie unter Externe Ressourcen für .NET Compact Framework.

So konvertieren Sie eine Direct3D-Desktopanwendung

  1. Erstellen Sie in Microsoft Visual Studio 2005 eine Anwendung für intelligente Geräte. Verwenden Sie dabei eine Vorlage, die für Microsoft Windows Mobile, Version 5.0, für Pocket PC oder Windows Mobile, Version 5.0, für Smartphone bestimmt ist.

  2. Fügen Sie dem Projekt einen Verweis auf die Microsoft.WindowsMobile.DirectX-Komponente hinzu.

  3. Fügen Sie je nach der Programmiersprache eine Imports-Anweisung oder eine Using-Anweisung für die folgenden Namespaces hinzu:

  4. Kopieren Sie Code aus der Desktopanwendung, und ändern Sie ihn entsprechend.

So modifizieren Sie die Konstruktoren

  1. Die Erstellung des Device-Objekts erfordert in einer Anwendung für mobile Geräte andere Parameter und die folgenden Änderungen:

    • Hardware ist kein unterstützter DeviceType-Wert. Ändern Sie ihn in Default.

    • SoftwareVertexProcessing ist kein unterstützter CreateFlags-Wert. Ändern Sie ihn in None.

  2. Verwenden Sie einen Speicherpool, der auf dem Gerät unterstützt wird. Der TextureLoader-Konstruktor und der Mesh-Konstruktor überprüfen Funktionsbits, um sicherzustellen, dass die Objekte in einem vorhandenen Speicherpool erstellt werden, alle übrigen Konstruktoren überprüfen dies jedoch nicht. Informationen über die entsprechenden Funktionsbits, mit denen sichergestellt wird, dass auf dem Gerät ein Speicherpool verwendet werden kann, finden Sie unter Verwalten von Geräteressourcen.

So entfernen Sie nicht unterstützte Funktionen

  1. Entfernen Sie Member, die in .NET Compact Framework nicht existieren, z. B. Member, die nur in der Desktopversion der VertexFormats-Enumeration enthalten sind.

  2. Entfernen Sie Aufrufe der Mesh.Load-Methoden. Verwaltetes Direct3D Mobile umfasst kein Ladeprogramm für X-Dateien. Das Direct3D Mobile Meshes-Beispiel zeigt, wie Netze mithilfe eines benutzerdefinierten MD3DM-Dateiformats geladen werden. Es enthält Code, mit dem X-Dateien in MD3DM-Dateien konvertiert und anschließend geladen werden. Das MD3DM-Dateiformat ist keine Komponente von .NET Compact Framework, sondern ein Beispiel dafür, wie ein Netz geladen wird unter der Voraussetzung, dass das Laden von X-Dateien nicht unterstützt wird.

  3. Entfernen Sie Pixel- und Vertexschattierer.

  4. Stellen Sie sicher, dass die Farbtiefe unterstützt wird. Manche Treiber für mobile Geräte bieten aufgrund stark eingeschränkter Arbeitsspeicherkapazität unter Umständen keine hohe Farbtiefe für die Bildschirmauflösung oder für Texturen. Stellen Sie sicher, dass die Treiber die Farbtiefenanforderungen unterstützen, oder nehmen Sie entsprechende Änderungen vor.

  5. Entfernen Sie Code, der auf die folgenden nicht unterstützten Direct3D-Desktoptypen verweist:

    AllocateHierarchy

    AnimationOutput

    AnimationOutputFlags

    AnimationRootFrame

    AnimationSet

    AttributeWeights

    BandwidthTimings

    BasisType

    BoneCombination

    BoneInfluences

    Box

    CacheUtilization

    CallbackData

    CallbackSearchFlags

    CannotAttributeSortException

    CannotModifyIndexBufferException

    Channel

    CleanType

    ClipPlane

    ClipPlanes

    ColorOperator

    CompressedAnimationSet

    CompressionFlags

    CompressionQuality

    ConflictingRenderStateException

    ConflictingTextureFilterException

    ConflictingTexturePaletteException

    ConstantDescription

    ConstantTable

    ConstantTableDescription

    CubeMapFace

    CubeTexture

    CubeTextureRequirements

    CubeMapFace

    CubeTexture

    CubeTextureRequirements

    DeclarationMethod

    DeclarationType

    DeclarationTypeCaps

    DeclarationUsage

    DegenerateItems

    DegreeType

    DeviceInformation

    Direct3DXException

    DisplacementMap

    DisplacementParameter

    DriverCaps

    DuplicateNamedFragmentException

    Effect

    EffectCompiler

    EffectDefault

    EffectDefaultType

    EffectDescription

    EffectHandle

    EffectInstance

    EffectPool

    EffectStateManager

    EventDescription

    EventType

    ExtendedMaterial

    Fill2DTextureCallback

    Fill3DTextureCallback

    FormatList

    FragmentDescription

    FragmentLinker

    Frame

    FunctionDescription

    FX

    GammaRamp

    GlyphMetricsFloat

    GpuSimulatorOption

    HandleAnimationCallback

    ImageFileFormat

    ImageInformation

    Include

    IncludeType

    InterfaceGuid

    InterfaceTimings

    IntersectInformation

    InvalidDataException

    InvalidMeshException

    IssueFlags

    KeyCallback

    KeyFramedAnimationSet

    KeyQuaternion

    KeyVector3

    Line

    LinePattern

    LoadedMeshHasNoDataException

    LoadUserData

    LockedBox

    Macro

    MeshContainer

    MeshData

    MyD3DXAllocateHierarchy

    MyD3DXAnimationCallback

    MyD3DXFrame

    MyD3DXIncludeClass

    MyD3DXLoadUserData

    MyD3DXMeshContainer

    MyD3DXSaveUserData

    NormalMap

    OutOfVideoMemoryException

    ParameterClass

    ParameterDescription

    ParameterFlags

    ParameterType

    PassDescription

    PatchEdge

    PatchInformation

    PatchMesh

    PatchType

    PipelineTimings

    PixelShader

    PixelShaderCaps

    PlaybackType

    Present

    PropertyDescription

    PrtBuffer

    PrtCompressedBuffer

    PrtEngine

    PrtEngineCallback

    PrtSplitMeshClusterData

    PrtSplitMeshVertexData

    Query

    QueryType

    RasterStatus

    RectanglePatchInformation

    RegisterSet

    RenderStates

    RenderTargetsMax

    RenderToEnvironmentDescription

    RenderToEnvironmentMap

    RenderToSurface

    RenderToSurfaceDescription

    ResourceManager

    ResourceStats

    SamplerStageStates

    SamplerStateManager

    SamplerStateManagerCollection

    SaveUserData

    ScaleRotateTranslate

    Semantic

    ShaderConstantInformation

    ShaderConstantTable

    ShaderDebugInformation

    ShaderFileInformation

    ShaderFlags

    ShaderInstructionInformation

    ShaderLoader

    ShaderStructMemberInformation

    ShaderTypeInformation

    ShaderVariableInformation

    ShaderWriteInformation

    SimplificationMesh

    SkinInformation

    SkinMesh

    SkinningNotSupportedException

    SphericalHarmonicMaterial

    SphericalHarmonics

    StageTimings

    StateBlock

    StateBlockType

    SurfaceLoader

    TextureGutterHelper

    TextureShader

    TextureStageStates

    TooManyInfluencesException

    TooManyOperationsException

    TrackDescription

    TransitionType

    TrianglePatchInformation

    UnsupportedAlphaArgumentException

    UnsupportedAlphaOperationException

    UnsupportedColorArgumentException

    UnsupportedColorOperationException

    UnsupportedFactorValueException

    UnsupportedTextureFilterException

    VertexCache

    VertexDeclaration

    VertexElement

    VertexFormatCaps

    VertexShader

    VertexShaderCaps

    VertexStats

    Volume

    VolumeDescription

    VolumeLoader

    VolumeTexture

    VolumeTextureRequirements

    WasStillDrawingException

    WeldEpsilons

    WeldEpsilonsFlags

    Wrap

    WrongTextureFormatException

    XFile

    XFileData

    XFileErrorCodes

    XFileFormat

    XFileGuid

    XFileManager

    XFileSaveData

Siehe auch

Weitere Ressourcen

Mobile Direct3D-Programmierung in .NET Compact Framework