Avatar billede benjamin_ Nybegynder
10. april 2003 - 13:44 Der er 22 kommentarer og
1 løsning

kasser i et window..

Mit problem er at jeg har et vindue som jeg bruger til at tegne noget grafik i..

Dette vindue kan være delte i fire stykker og jeg vil derfor gerne lave en form for ramme/r (ligesom i 3dstudio og lign.) inden i vinduet der ligesom skiller stykkerne ad..

Er dette muligt?

Hjælp med lidt kode ville være lækkert =)


- benjamin
Avatar billede jpk Nybegynder
10. april 2003 - 13:47 #1
Det lyder som om det kunne blive ret besværligt at håndtere!
Hvad er grunden til, at du ikke bruger 4 vinduer? (ligesom 3dstudio og lign.)
Avatar billede benjamin_ Nybegynder
10. april 2003 - 13:51 #2
Grunden er at jeg bare har et renderingswindow som direct3d tegner i. Enten i fullwindow mode eller i 4 delt window mode. De 4 opsplittede window kaldes viewports i direct3d og jeg mangler bare at tegne nogle linier eller kasser for bedre at synliggøre at det er 4 forskellige views..

Kan man ikke tage den dc til den og så tegne nogle linier eller noget?


- benjamin
Avatar billede jpk Nybegynder
10. april 2003 - 13:56 #3
Med fullwindow mener du så fullscreen eller bare at du kun har en viewport?
Avatar billede jpk Nybegynder
10. april 2003 - 14:19 #4
Men hvis du vil gå den vej, så jo, du kan da bare tegne nogle rammer...

En mulighed er selvfølgelig at bruge GDI metoder til at tegne på DC'en, men som du sikkert ved, så giver det et alvorligt slowdown for din D3D app...

Du har jo direkte adgang til din screen buffer (eller memory buffer hvis du bruger double/trible-buffering) så du kan jo tegne nogle rammer her...
Avatar billede benjamin_ Nybegynder
10. april 2003 - 14:37 #5
med fullwindow mener jeg bare én viewport..

hvad kan du ellers anbefale at gøre?


- benjamin
Avatar billede benjamin_ Nybegynder
10. april 2003 - 14:39 #6
jeg bruger forresten doublebuffering..  front+back
Avatar billede jpk Nybegynder
10. april 2003 - 15:39 #7
Når du nu bruger DX er det helt fint selv at tegne "dividers"

Hvis du er interesseret er her et lille eksempel om rendering til flere vinduer
http://www.mvps.org/directx/articles/rendering_to_multiple_windows.htm
Avatar billede benjamin_ Nybegynder
11. april 2003 - 08:59 #8
jpk >> En gut har svaret følgende: "clear the entire viewport first with the line color and then each of the 4 other viewports are slightly smaller than half leaving a border of the line color left..."

Ja, men med hvad skal jeg cleare den med?  Hvis jeg clearer den med den clear funktion som ligger lige inden end beginscene så har jeg jo ikke noget at sætte en baggrundsfarve med..!?!!!


- benjamin
Avatar billede jpk Nybegynder
11. april 2003 - 09:05 #9
4. argument til IDirect3DDevice8::Clear er jo farven?
Avatar billede jpk Nybegynder
11. april 2003 - 09:09 #10
Du kan jo bare kalde Clear flere gange
Avatar billede jpk Nybegynder
11. april 2003 - 09:11 #11
Forestil dig at det er analogt til GDI FillRect
Avatar billede benjamin_ Nybegynder
11. april 2003 - 09:12 #12
Man kan bruge den flere gange?
Avatar billede benjamin_ Nybegynder
11. april 2003 - 09:15 #13
Jeg bruger denne..:

m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, dwClearColor, 1.0f, 0 );
Avatar billede jpk Nybegynder
11. april 2003 - 09:16 #14
Ja, jeg har tidligere brugt den som en FillRect funktion...
Avatar billede benjamin_ Nybegynder
11. april 2003 - 09:20 #15
Men når jeg blot skal bruge det første kald til den som at sætte en "line-farve" så er der vel ikke brug for at cleare Zbufferen også ?  =)
Avatar billede jpk Nybegynder
11. april 2003 - 09:24 #16
Du skal naturligvis kun cleare Z-bufferen én gang pr. frame
Avatar billede benjamin_ Nybegynder
11. april 2003 - 09:26 #17
m_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, dwClearColor, 1.0f, 0 );

clearer den kun indenfor den pågældende viewport?


- benjamin
Avatar billede benjamin_ Nybegynder
11. april 2003 - 09:32 #18
jpk >> har du et bud på noget kode med 4 viewports..?

- benjamin
Avatar billede jpk Nybegynder
11. april 2003 - 09:33 #19
Har du ikke DX dokumentationen?
Hvis ikke er det da på tide at hente den...

2. argument:
pRects
[in] Pointer to an array of D3DRECT structures that describe the rectangles to clear. Set a rectangle to the dimensions of the rendering target to clear the entire surface. Each rectangle uses screen coordinates that correspond to points on the render target surface. Coordinates are clipped to the bounds of the viewport rectangle. This parameter can be set to NULL to indicate that the entire viewport rectangle is to be cleared.
Avatar billede benjamin_ Nybegynder
11. april 2003 - 10:24 #20
sikke noget %(/#Q)(..
nu flimrer hele skidtet..
Avatar billede benjamin_ Nybegynder
11. april 2003 - 10:52 #21
virker fint nu..  takker for hjælpen!!
og forresten..  min sdk har ikke nogen dokumentation..
hentede den HELT skrabede version..

- benjamin
Avatar billede benjamin_ Nybegynder
11. april 2003 - 10:53 #22
giv mig lige et svar jeg kan give dig kredit på..
Avatar billede jpk Nybegynder
11. april 2003 - 11:03 #23
Her er et svar!

Jeg kan maile dig dokumentationen hvis du er interesseret, den fylder 9MB...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester