Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Christian Rousselle Site Admin
Alter: 47 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.08.2003, 12:21 Titel: |
|
|
Wenn du einen 16 Bit Modus verwenden willst, wovon ich dringend abrate, muss du schauen, was für einen Modus die jeweilige Grafikkarte unterstützt R5G6B5 A1R5G5B5 usw.. Ist mühsam. Ich hätte nicht erwartet, dass das Programm nicht mit voller FPS läuft. Ich sehe aber auch auf meinem System, dass es mit 76 anstatt 85 (max. möglichen) FPS läuft. Finde ich schon erstaunlich. Ich befürchte die neuen Karten/Treiber sind nicht mehr so auf Blts optimiert.
Christian |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 04.08.2003, 12:25 Titel: |
|
|
Mal zu dem Pitch Werten zum Optimieren des Codes:
Ist der Pitch Wert bei jeder Oberfläche mit der gleichen Farbtiefe identisch?
Das würde doch sehr viel Zeit sparen, bei den städigen Abfragen von diesem kostbaren Wert und würde auch Speicher sparen, wenn man nur ein Pitch Variable im ganzen Programm für alle Surfaces hätte... _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 47 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.08.2003, 12:29 Titel: |
|
|
Hallo,
man kann nicht davon ausgehen, dass Pitch für alle Oberflächen gleich ist. Er ist aber für eine Oberfläche immer gleich. Es reicht also, ihn einmal zu lesen, z.B. zu Beginn des Programms.
C. |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 36 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 04.08.2003, 12:35 Titel: |
|
|
Wieso rätst du von 16 Bit ab?
Bei der Downloadversion hatte ich auch mehr FPS(so ca. 40-60). Aber komischerweise habe ich jetzt(auch ohne Blendung) höchstens 35 FPS.
PS: Ich hab ne Elsa Victory Erazor LT GraKa und leider nur 8 MB SDRAM _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 47 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.08.2003, 12:41 Titel: |
|
|
Naja, eben wg. der Problematik, dass dieser Modus unterschiedlich von Grafikkarten behandelt wird und 16 Bit nicht so leicht zu handeln sind wie 32. Außerdem hast du bei der erstellung der Grafiken irgendwann das Problem alles auf 16 Bit runtersampeln zu müssen. Deine Grafikkarte ist tatsälich schon etwas in die Jahre gekommen |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 36 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 04.08.2003, 12:56 Titel: |
|
|
Na ja, das ist durch einen Leichtsinnsvällher passiert
Ich hab im Konstruktor der DD-Klasse aus versehen und unbegründet die Farbtiefe mit 16 initialisiert. Dann kommt ja in der Initmethode die Einstellung der Farbtiefe. Und da würde man normalerweise zuerst versuchen 32 Bit einzustellen, dann 24 und zuletzt 16. Aber da ich Farbtiefe ststt mit 32 mit 16 initialisiert habe, hat er gleich 16 Bit genommen.
Und jetzt hab ich kein Bock mehr, das umzustellen(next Game, new Luck ) _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 36 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 05.08.2003, 11:49 Titel: |
|
|
Hi,
ich habe jetzt noch mal was über das Performanceproblem herausgefunden: Wenn ich die Anweisungen zum Zeichnen der Terrainquadrate herausnehme, habe ich vergleichsweise sehr hohe FPS.
Jetzt hab ich mal probiert, was passiert, wenn ich eine der beiden BltFast-Aufrufe auskommentiere. Die normale Drawfunktion sieht ja bei mir(ohne die paar if-Anweisungen) folgendermaßen aus:
Code: | RECT SRect;
SRect.left = Fx;
SRect.right = Fx+Fbreite;
SRect.top = Fy;
SRect.bottom =Fy+Fhohe;
// Anweisung 1 Normales Blitten
DDHinterBuffer->BltFast(xpos,ypos,DDSpriteSurface[ss],&SRect,DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY);
// Anweisung 2 Blitten für Alphaberechnungen
DDAlphaSurface->BltFast(xpos,ypos,DDSystemSurface[ss],&SRect,DDBLTFAST_WAIT | DDBLTFAST_SRCCOLORKEY); |
DDHinterBuffer ist der Backbuffer und ist, sowie das Surface DDSpriteSurface.
DDAlphaSurface ist das Surface im AGP-Speicher und DDSystemSurface ist das Surface im Systemspeicher, das die gleichen Pixel, wie DDSpriteSurface enthält.
Wenn ich jetzt die Anweisung 2(Blitten für Alphaberechnungen) entferne, dann habe ich schon höhere FPS(kleinste: 19). Wenn ich nun aber statt dessen die Anweisung 1(Normales Blitten) entferne, so habe ich(für 450MHz-Verhältnisse mit 8 MB SDRAM – Elsa Victory Erazor LT) traumhafte FPS(höchste: um die 50, kleinste: 21-24). Das wäre nun wirklich auszuhalten.
Nun wollte ich fragen, ob man da noch irgendwas optimieren kann? Muss man wirklich (Anweisung 2)in das Surface im AGP-Speicher kopieren, oder sollte man nicht lieber eines im Systemspeicher erstellen?
Ist das normal, dass Videospeicher in Videospeicher langsamer ist, als Systemspeicher in AGP-Speicher? _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
DarK Super JLI'ler
Anmeldedatum: 23.07.2002 Beiträge: 452 Wohnort: NRW Medaillen: Keine
|
Verfasst am: 06.08.2003, 13:36 Titel: |
|
|
wahrscheinlich die dümmste frage überhaupt, aber gibs das "Alpha Sample für DirectDraw" auch "für Direct3d" ? _________________ "Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."
"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."
"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun" |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 47 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 06.08.2003, 13:38 Titel: |
|
|
Steht das nicht im 2. Buch? In Direct3D ist es aber einfacher, du muss nur die Renderstates richtig setzen. Schau mal in der DX9 Doku, da ist es auch erklärt. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 06.08.2003, 14:15 Titel: |
|
|
Christian Rousselle hat Folgendes geschrieben: | Steht das nicht im 2. Buch? In Direct3D ist es aber einfacher, du muss nur die Renderstates richtig setzen. Schau mal in der DX9 Doku, da ist es auch erklärt. |
Wo steht das im zweiten Buch für 2D? Das fin ich nicht! Steht auch nicht im Stichwortverzeichnis. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 47 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 06.08.2003, 14:43 Titel: |
|
|
Ich meine für 3D, ich dachte DarK meint das auch. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 06.08.2003, 17:06 Titel: |
|
|
Wie macht man jetzt eigentlich 75/25 Blendings?
Also so funzt das zum Beispiel bei mir nciht
Code: |
float dest_percent = 0.25;
float source_percent = 0.75;
BlendRed = (DestRed *dest_percent) * (SourceRed *source_percent)/256;
BlendGreen = (DestGreen *dest_percent) * (SourceGreen *source_percent)/256;
BlendBlue = (DestBlue *dest_percent) * (SourceBlue *source_percent)/256;
|
_________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 06.08.2003, 18:19 Titel: |
|
|
Code: |
BlendRed = (DestRed *dest_percent) * (SourceRed *source_percent)/256;
|
Erstmal musst du die beiden Farbanteile addieren(jedenfalls beim additiven Shading ;). Dann ist da noch das Problem mit den Integers. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 14.08.2003, 14:48 Titel: |
|
|
Hab das heute mal wieder versucht, aber eigentlich müsste das hier doch funktionieren?
Code: |
BlendRed = alpha * ( SourceRed - DestRed ) + DestRed;
BlendGreen = alpha * ( SourceGreen - DestGreen ) + DestGreen;
BlendBlue = alpha * ( SourceBlue - DestBlue ) + DestBlue;
|
alpha beträgt ein Wert von 0.0f bis 1.0f.
Hier funktioniert das aber nur wenn alpha 0.0f, 0.5f oder den Wert 1.0f hat. _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 14.08.2003, 14:51 Titel: |
|
|
Benutzt du auch Real-Werte? Ich würde es erst ausrechnen und hinterher in Ganzzahlen casten. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
|