Comment : convertir des applications Direct3D bureautiques

Mise à jour : novembre 2007

Vous pouvez modifier une application Direct3D managée existante développée pour un ordinateur de bureau afin qu'elle s'exécute sur un appareil mobile. Les modifications que vous devez apporter se situent dans les domaines suivants :

  • Références aux composants et espaces de noms.

  • Modifications au constructeur Device et aux constructeurs d'autres objets.

  • Suppression de fonctionnalités non prises en charge.

  • Optimisations des ressources. Pour plus d'informations sur le développement des applications Direct3D mobiles qui utilisent des ressources limitées de façon efficace, consultez Gestion des ressources des périphériques.

Remarque :

Les applications Direct3D mobiles managées requièrent le logiciel Windows Mobile version 5.0 pour les appareils de type Pocket PC et Smartphone. Consultez Ressources externes pour le .NET Compact Framework pour plus d'informations sur le logiciel Windows Mobile et les Kits de développement logiciel.

Pour convertir une application Direct3D de bureau

  1. Dans Microsoft Visual Studio 2005, créez une application Smart Device à l'aide d'un modèle qui cible le logiciel Microsoft Windows Mobile version 5.0 pour le logiciel Pocket PC ou Windows Mobile version 5.0 pour Smartphone.

  2. Ajoutez une référence au composant Microsoft.WindowsMobile.DirectX à votre projet.

  3. Selon votre langage de programmation, ajoutez une instruction Imports ou Using pour ces espaces de noms :

  4. Copiez le code de votre application bureautique et modifiez-le si nécessaire.

Pour modifier les constructeurs

  1. La construction de l'objet Device requiert des paramètres différents dans une application mobile et nécessite les modifications suivantes :

    • Hardware n'est pas une valeur DeviceType prise en charge. Remplacez-la par Default.

    • SoftwareVertexProcessing n'est pas une valeur CreateFlags prise en charge. Remplacez-la par None.

  2. Utilisez un pool de mémoires qui est pris en charge sur l'appareil. Les constructeurs TextureLoader et Mesh vérifient les bits de fonction afin de garantir que les objets sont créés dans un pool de mémoires qui existe, ce qui n'est pas le cas de tous les autres constructeurs. Pour plus d'informations sur les bits de fonction appropriés permettant de garantir qu'un pool de mémoires peut être utilisé sur l'appareil, consultez Gestion des ressources des périphériques.

Pour supprimer les fonctionnalités non prises en charge

  1. Supprimez les membres qui n'existent pas dans le .NET Compact Framework, tel que ceux qui ne figurent que dans la version pour ordinateur de bureau de l'énumération VertexFormats.

  2. Supprimez les appels aux méthodes Mesh.Load. Managed Direct3D Mobile n'inclut pas de chargeur pour les fichiers .X. L'exemple Direct3D Mobile Meshes montre comment charger des maillages à l'aide d'un format de fichier .md3dm personnalisé et contient un code qui convertit des fichiers .X en fichiers .md3dm avant de les charger. Notez que le format de fichier .md3dm n'est pas un composant du .NET Compact Framework, mais un exemple de chargement d'un maillage étant donné que le chargement des fichiers .X n'est pas pris en charge.

  3. Supprimez les shaders de vertex et de pixel.

  4. Garantissez la prise en charge de la profondeur des couleurs. Certains pilotes d'appareils mobiles peuvent ne pas offrir des profondeurs de 65536 couleurs pour la résolution d'écran ou les textures en raison de restrictions de mémoire strictes. Vérifiez que les pilotes prennent en charge votre configuration requise en matière de profondeur des couleurs ou apportez des modifications si nécessaire.

  5. Supprimez le code qui fait référence aux types Direct3D de bureau non pris en charge suivants :

    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

Voir aussi

Autres ressources

Programmation Direct3D Mobile dans le .NET Compact Framework