Forum de la communauté SFML

Aide => Fenêtrage => Discussion démarrée par: Alundra le Novembre 09, 2012, 05:12:51 pm

Titre: Display / Active en dehors de window
Posté par: Alundra le Novembre 09, 2012, 05:12:51 pm
Bonjour,
J'aimerais savoir si il est possible de faire un appel de Display/SetActive en dehors d'un window.
J'ai une class CWindow qui utilise sfml que pour l'OpenGL, du coups DirectX n'a pas besoin de ces fonctions car elle sont utilisés que dans le renderer.
En gros, ca serait de gerer que le context independement de la fenetre pour un renderer OpenGL.

Merci
Titre: Re : Display / Active en dehors de window
Posté par: Laurent le Novembre 09, 2012, 05:17:03 pm
Non tu ne peux pas, le contexte est lié à la fenêtre. Mais quel est le problème au juste ? Je ne vois pas ce que ça change.
Titre: Re : Display / Active en dehors de window
Posté par: Alundra le Novembre 10, 2012, 03:08:01 am
Dans mon renderer j'ai une fonction "AddRenderWindow( CWindow* )".
Cette fonction ajout un "TRenderWindow" qui est une "struct" interne a CRenderer.
Dans Direct3D11 chaque struct possede :
IDXGISwapChain* SwapChain;
ID3D11RenderTargetView* RenderTargetView;
ID3D11DepthStencilView* DepthStencilView;
 

Pour OpenGL du coups, cette struct contenait juste un pointer de CWindow qui faisait appel a SetActiveWindow/Display.Le code Direct3D est bien séparé Fenetre/Rendu, alors que OpenGL a ses fonction de rendu dans Fenetre.Il y a donc pas moyen de séparer comme Direct3D ?
Je voudrais avoir 2 DLL OpenGL/Direct3D11, qui serait donc les RenderModule.Il y a une meilleur façon de procéder ?
Titre: Re : Display / Active en dehors de window
Posté par: Laurent le Novembre 10, 2012, 09:50:34 am
Pourquoi un CWindow ? Tout ce dont tu as besoin c'est d'un sf::Window*. Vois ça comme l'équivalent à ton ID3D11RenderTargetView*, puisque ton renderer OpenGL utilise SFML.
Titre: Re : Display / Active en dehors de window
Posté par: Alundra le Novembre 10, 2012, 12:54:24 pm
J'ai une class contenant que des fonctions static qui procède a la init/shutdown et la loop en fonction de la fenêtre définie, du coups CWindow était un wrapper d'une fenêtre OpenGL/nonOpenGL mais peut être serait mieux de faire isolé le fenêtrage de la partie graphique.Du coups avoir une class CEngine qui Init/Shutdown et laisser la loop dans la partie Game/Editor ?