DirectX 9 - Créer appareil et rendre à la texture à l'intérieur DLL?
-
25-09-2019 - |
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!
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.