Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
mortl2 Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88 Wohnort: Straubing/Bayern Medaillen: Keine
|
Verfasst am: 22.02.2003, 17:39 Titel: GDI und Direct3D |
|
|
Hi,
Ist es möglich neben Direct3D auch GDI Funktionen zu nutzen? Wenn ja, wie?
Mortl |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 22.02.2003, 18:12 Titel: |
|
|
Hiho,
das geht mit der Methode GetDC(). Du muss dir zuerst einen Zeiger auf den Backbuffer holen GetBackBuffer().
lpDirect3DSurface = lpD3DDevice->GetBackBuffer(..);
HDC DC;
lpDirect3DSurface->GetDC(&DC);
Christian |
|
Nach oben |
|
|
mortl2 Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88 Wohnort: Straubing/Bayern Medaillen: Keine
|
Verfasst am: 23.02.2003, 06:56 Titel: |
|
|
Welche Parameter muss ich der GetBackBuffer Funktion übergeben?
Ich hab schon in der DX-Hilfe gesucht, doch des sagt mir nicht viel:
HRESULT GetBackBuffer(
UINT BackBuffer,
D3DBACKBUFFER_TYPE Type,
IDirect3DSurface8** ppBackBuffer
Mortl |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 23.02.2003, 10:01 Titel: |
|
|
Hallo,
es sollte so gehen:
LPDIRECT3DSURFACE9 lpSurface;
lpD3DDevice->GetBackBuffer(0,D3DBACKBUFFER_TYPE_MONO,&lpSurface);
Christian |
|
Nach oben |
|
|
mortl2 Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88 Wohnort: Straubing/Bayern Medaillen: Keine
|
Verfasst am: 23.02.2003, 10:25 Titel: |
|
|
Es hat funktioniert, doch jetzt spuckt der Debugger die Fehlermelung "GetDC : Ist kein Element von 'IDirect3DSurface8" aus. Vielleicht liegt es daran das ich noch das DX SDK in der Version 8.1 hab?
Mortl |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 23.02.2003, 10:44 Titel: |
|
|
Oh, ich dachte das gab es auch in DX8 -> gibt es aber nicht . Was willst du den machen? |
|
Nach oben |
|
|
mortl2 Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88 Wohnort: Straubing/Bayern Medaillen: Keine
|
Verfasst am: 23.02.2003, 17:09 Titel: |
|
|
Ich wollte mir mal ne Klasse für eine Benutzeroberfläche(Buttons, Checkboxe's, Eingabefelder...) unter Direct3D zusammenstellen, und ich find das ging am einfachsten mit dem GDI, oder?
Mortl |
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 23.02.2003, 21:51 Titel: |
|
|
Hi,
ich bin mir nicht sicher, ob dir das GDI wirklich die benötigte Geschwindigkeit für sowas bietet. Ein Button (oder so) mag ja per GDI noch halbwegs flott gehen, aber nun bedenkt mal was passiert wenn du ein Menü mit insgesamt vielleicht 10 bis 20 Steuerelementen. Ich denke, dass es da zu langsam wird. Außerdem bietet dir D3D noch tolle Möglichkeiten für deine Steuerelemente, die mit dem GDI nicht so einfach zu realisieren gewesen wären. So bspw. kannst du deine Buttons individuell beleuchten. Nicht so wie die Win32-Buttons wo das Licht immer von links oben kommt. Ich würde diese Steuerelemente an deiner Stelle, wenn in D3D programmieren, da es schneller ist und dir mehr Möglichkeiten bietet. Ich habe der Zeit ein ähnliches Projekt, ich programmiere Steuerelemente für mein Spiel, welche auf OpenGL basieren.
Gruss Tarek |
|
Nach oben |
|
|
mortl2 Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88 Wohnort: Straubing/Bayern Medaillen: Keine
|
Verfasst am: 24.02.2003, 14:07 Titel: |
|
|
Da hab ich mir wohl wieder zu viel vorgenommen. Wie könnte man eine Benutzeroberfläche unter Direct3D realisieren?
Mortl |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 24.02.2003, 14:24 Titel: |
|
|
Auch nicht unbedingt einfacher, als mit GDI, läuft aber nach immer dem gleichen Prinzip ab:
Grafiken entwerfen für jeden Steuerelementzustand
Ein paar Statusvariablen definieren für den Zustand
Maus- und Tastaturschnittstelle Definieren und Programmieren
Messages zur Behandlung der Ereignisse Generieren
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
|