Flags zusammensetzen
-
Hallo, ich hatte erst angenommen das ich einen Fehler im Code habe. Doch im C-Forum hat man mir gesagt das es rein Syntax technisch ok ist.
API : DIRECTX 7
[cpp]
int Clear(int flag)
{
DWORD dwflag=0;if(flag&COLOR_BUFFER_BIT)
dwflag|=D3DCLEAR_TARGET;if(flag&DEPTH_BUFFER_BIT)
dwflag|=D3DCLEAR_ZBUFFER;if(lpDevice->Clear(0,NULL,dwflag,dwcolor,dvZ,0)!=D3D_OK)
return ERROR_DEVICE;
return OK;
}[/cpp]Das Flag in der Methode Clear von lpDevice ist als DWORD definiert. Danch müsste es doch möglich sein es auch so wie oben zusammenzusetzen?
Ich schreibe die Frage mal hier rein weil es jetzt mehr um DirectX geht?
[ Dieser Beitrag wurde am 12.03.2003 um 15:42 Uhr von Netzwerk-Latenz editiert. ]
-
Was ist das Problem?
-
Also. Wenn ich die Funktion Clear() aufrufe, soll je nach dem welches Flag gesetzt wurde, der Z-Buffer oder nur der Hintergrund oder beide gelöscht werden.
Clear(COLOR_BUFFER_BIT); // Hintergrund löschen.
Clear(DEPTH_BUFFER_BIT); // Z-Buffer löschen.
Clear(DEPTH_BUFFER_BIT|COLOR_BUFFER_BIT) // Beide löschen.Doch es löscht den Hintergrund nicht? (Z-Buffer kann ich noch nicht sagen. Noch nicht implementiert). Also er setzt das Flag nicht richtig
-
Original erstellt von Netzwerk-Latenz:
**Also. Wenn ich die Funktion Clear() aufrufe, soll je nach dem welches Flag gesetzt wurde, der Z-Buffer oder nur der Hintergrund oder beide gelöscht werden.Clear(COLOR_BUFFER_BIT); // Hintergrund löschen.
Clear(DEPTH_BUFFER_BIT); // Z-Buffer löschen.
Clear(DEPTH_BUFFER_BIT|COLOR_BUFFER_BIT) // Beide löschen.Doch es löscht den Hintergrund nicht? (Z-Buffer kann ich noch nicht sagen. Noch nicht implementiert). Also er setzt das Flag nicht richtig
**
Als was ist COLOR_BUFFER_BIT und DEPTH_BUFFER_BIT definiert? Werden immer die richtigen Bedingungen ausgeführt?
-
Das verstehe ich jetzt nicht.
Ich wollte den Bereich ab 0x0002BC dafür benützen
#define COLOR_BUFFER_BIT 0x0002BC
#define DEPTH_BUFFER_BIT 0x0002BDDas geht aber nicht
Wenn ich die Werte ändere
#define COLOR_BUFFER_BIT 0x000001
#define DEPTH_BUFFER_BIT 0x000002oder
#define COLOR_BUFFER_BIT 0x000009
#define DEPTH_BUFFER_BIT 0x000010geht es.
Kann man Flags nur im 8Bit Bereich benutzen?
-
omg
Lern erste wie diese binäre Arithmetik funktioniert, dann können wir nochmal drüber reden.
-
-
Flag heißt ja dass nur eine Stelle des 32Bit Blocks beachtet werden soll (oder so) und deßhalb solltest Du auch nur Zahlen nehmen die binär nur eine 1 drin haben, also 1, 2, 4, 8, 16...2147483648
-
Ach so geht das
2BC = 1010111100
2BD = 1010111101
----------------
2BD = 1010111101 -> GEHT NICHT400 = 100000000000
800 = 10000000000
------------------
C00 = 110000000000 -> SO GEHT ESNaja ich habe erst vor ein paar Monaten mit der Programmierung begonne
Das werde ich schon lernen.
[ Dieser Beitrag wurde am 12.03.2003 um 19:04 Uhr von Netzwerk-Latenz editiert. ]