DirectX Rendu [Résolu]

Signaler
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
-
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Bonjour,

Je voulais savoir comment faire pour afficher le rendu d'une scéne 3D seulement dans une partie de la fenêtre.
(par exemple dans la moitié de la fenêtre)

Merci

4 réponses

Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008

Salut,
J'ai retrouvé un code que j'avais fait.
J'avais sur une même fenêtre un rendu 3D et une interface faite avec l'editeur de ressources Windows.

En voici un extrait:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nCmdShow)
{

    MSG msg;                 // message from queue
    BOOL notDone = TRUE;       // flag for thread completion
    HMENU hMenu;

    g_hInstance = hInstance;

    // Loading windows
    WNDCLASS            wndClass;
    HWND                hWnd;

    wndClass.style = CS_HREDRAW | CS_VREDRAW;
    wndClass.lpfnWndProc = WindowProc ;        // Fonction gestionnaire d'evenements
    wndClass.cbClsExtra = 0;
    wndClass.cbWndExtra = 0;
    wndClass.hInstance = hInstance;
    wndClass.hIcon = NULL ;
    wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
    wndClass.hbrBackground = (HBRUSH) NULL;
    wndClass.lpszMenuName = NULL;
    wndClass.lpszClassName = "Class";
    RegisterClass( &wndClass );

    hMenu = LoadMenu(hInstance, (LPCTSTR)IDR_MENU);

    hWnd = CreateWindow(
            "Class",
            NULL,
            WS_OVERLAPPEDWINDOW | WS_SYSMENU ,
            0,
            0,
            800,
            800,
            (HWND) NULL, //parent
            (HMENU)hMenu, //hMenu,
            hInstance,
            NULL );

    SetWindowText(hWnd, "Title");
    ShowWindow(hWnd, nCmdShow/*SW_SHOWMAXIMIZED*/);

    hWndParam = CreateDialog(hInstance, MAKEINTRESOURCE(PARAMFRAME), hWnd, WndParamProc);

    ShowWindow(hWndParam, TRUE);
    UpdateWindow(hWnd);

    ...... }

Le prototype du gestionnaire d'évenements de l'interface:

BOOL CALLBACK WndParamProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

Le prototype du gestionnaire des évenements sur la fenêtre mère:

LPARAM CALLBACK WindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );

Le prototype du gestionnaire des évenements sur la fenêtre 3D (créée dans le WM_CREATE de
WindowProc
):
LPARAM CALLBACK WndDirect3DProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008

Salut,

Tu crées la fenetre principale (couleur de fond transparente).
Tu crées une fenêtre enfant à l'intérieur que tu positionnes comme tu veux.
Tu passes le HWND de l'enfant à direct3D lors de la création du device.

Lien: createwindow
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

Ok merci.

En fait je crée 2 fenêtres
Une où je vais afficher ma scéne 3D et l'autre où je vais pouvoir inserer mes boutons(je veux faire une interface ;))

Je vais essayer si j'ai un probleme je te redemande.

Merci encore.
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010

Par contre faut-il que je crée un CALLBACK pour chaque fenêtre ?