Question

Je suis en train de créer un périphérique DirectX 9 géré dans une DLL et ensuite utiliser cette DLL pour rendre les scènes à une surface hors-champ. Je sais comment faire le rendu hors-champ, mais ma question est:

Est-il possible de créer un dispositif de directx dans une DLL?

Feeble tentative # 1 (InvalidCallException):

Device device = new Device(0, DeviceType.Hardware, null, CreateFlags.SoftwareVertexProcessing, presentParams);

Feeble tentative # 2 (InvalidCallException):

Device device = new Device(0, DeviceType.Hardware, new IntPtr(0), CreateFlags.SoftwareVertexProcessing, presentParams);

Le constructeur de surcharge périphériques disponibles sont:

public Device(int, DeviceType, Control, CreateFlags, PresentParameters[]);
public Device(int, DeviceType, IntPtr, CreateFlags, PresentParameters[]);

Toute aide pourrait très probablement faire mon jour!

Était-ce utile?

La solution

trouvé la réponse. Je créé une commande cachée, régler la largeur et la hauteur de celui-ci de manière appropriée puis le définir comme la cible. Fonctionne parfaitement. Pour ceux qui peuvent tomber par hasard sur c'est le code plus tard ici:

// Create the hidden control
Control hiddenControl = new Control();
control.Width = width;
control.Height = height;
control.Visible = false;         // Just for good measure, it wouldn't be displayed anyways

// Present Parameters
PresentParamaters presentParams = new PresentParamaters();
presentParams.SwapEffect = SwapEffect.Discard;
presentParams.Windowed = true;

// Create the device
Device device = new Device(0, DeviceType.Hardware, hiddenControl, CreateFlags.SoftwareVertexProcessing, presentParams);

C'est tout ce qu'il faut, en supposant comme je l'ai dit avant que vous êtes rendu à une texture. Je ne sais pas ce que (le cas échéant) se passerait-il si vous deviez rendre réellement à ce contrôle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top