![]() |
AW: Shape Wars - Version 1.0
Für Gegner, die aussehen als wären sie aus laserlicht ist bloom aber ein bisschen überdimensioniert (Wenn ich so an die Performance denke...:?).
Der Effekt an sich wäre natürlich cool, sollte aber auch durch Texturen zu erreichen sein. Einfach halbtransparent und dann nen Weichzeichner drüber hauen... |
AW: Shape Wars - Version 1.0
Zitat:
|
AW: Shape Wars - Version 1.0
Also der animierte hintergrund ist irgendwie schon geil.:)
Wenn viel los ist ist es manchmal nen bisschen schwer zu erkennen was gerade passiert aber das hat auch einen gewissen reiz. Kleiner Bug noch: Wenn man im Spiel in der "ohne Musik"-Version auf "x" drückt gibt es ne fehlermeldung Ansonsten auf jeden fall eine würdige Version 1.0:wink: |
AW: Shape Wars - Version 1.0
Das Spiel ist auch ohne Musik nicht das Spiel ;) werd ich aber noch fixxen
|
AW: Shape Wars - Version 1.0
Liste der Anhänge anzeigen (Anzahl: 1)
Über Shader schluckt das ned viel Performance!
Im Anhang befindet sich eine Demo. Per Mausklick und Herumschieben kann man das Model - das nicht meins ist; habs irgendwo aus dem Internet - rotieren. Je näher es zum Betrachter ist, desto heller/beleuchteter ist es. Per Pfeiltasten nach oben/unten lässt sich der Threshold Wert ändern. Per Enter kann man sich nun die einzelnen Renderpasses anschauen. Zuerst wird normal gerendert (First Pass), anschließend wird alles geblurrt (Blurred Pass), dann wird gebloomt (helle Stellen werden noch heller, Dunkle - je nach Threshold - entfernt)(Selected-Parts Pass). Es wird nochmal geblurrt (Blurred Pass) und letzendlich wird die Postprocessed Texture über die Scene geblendet! (Bloomed Pass) Edit: Nun gut, der FPS Zähler hat anschließend 1/10 des ursprünglichen Wertes. Aber ich glaube, dass kommt daher, weil ich da soviele Renderpasses habe und ständig Texturen neu befülle. Das kann man bestimmt optimaler machen! |
AW: Shape Wars - Version 1.0
@Aphton: Super danke, werd ich mir mal anschauen ;)
[Edit] Hättest du was dagegen den Quelltext auch zu veröffentlichen? [/Edit] |
AW: Shape Wars - Version 1.0
Zitat:
|
AW: Shape Wars - Version 1.0
Mmh...so langsam regt mich Delphi echt auf ^^
Ich bin gerade dabei, eine im Quelltext implementierte Vektor-Font zu erstellen, damit das Flackern endlich verschwindet. Diese Funktioniert auch super, löst allerdings jedesmal, wenn ich an der Unit nix verändert habe (und auch manchmal wenn ich etwas verändert habe) eine Zugriffsverletzung aus, die ich absolut nicht nachvollziehen kann (vor allem da das ganze hin und wieder funktioniert). Ich hoffe dass mir jemand von euch helfen kann, denn ansonsten wird es bei der Textsuite mit dem Flackern bleiben, da ich schon mit dem Online-Highscore ähnliche Probleme hatte (habe dazu auch nen Thread hier in der DP gestartet, mir konnt niemand helfen), und mir eine zweite Unit wo dieser Fehler auftritt zu viel ist. Also hab ich mich entschlossen mal den Quelltext von meiner Vektorfont (teilweise) zu veröffentlichen, und schauen ob mir jemand von euch helfen kann.
Delphi-Quellcode:
Ich hoffe mal dass da einer von euch was findet was so einen Fehler verursachen könnte.
unit VekFont;
interface uses dglOpenGL, SysUtils, Dialogs; type TLine = record x1, y1, x2, y2: Single; end; TSingleChar = record Length: Integer; Lines: array[0..6] of TLine; end; procedure ResetAllLetters; procedure SetupFont; function SetUpLine(xx1, yy1, xx2, yy2: Single): TLine; procedure RenderTextLine(Text: String; XPos, YPos, Size: Single); var Letters: array[32..129] of TSingleChar; implementation procedure RenderTextLine(Text: String; XPos, YPos, Size: Single); var x, i: Integer; begin // Text := UpperCase(Text); glBegin(GL_LINES); for x := 0 to Length(Text) do with Letters[Ord(Text[x])] do begin for i := 0 to Length-1 do begin //Laut Compiler kommt hier die Exception her, funktioniert aber eig und ist Fehlerfrei in einer einzelnen Anwendung die nur die Font benutzt) glVertex2f(Lines[i].x1 * Size + XPos + Size * 5 * x, Lines[i].y1 * Size + YPos); glVertex2f(Lines[i].x2 * Size + XPos + Size * 5 * x, Lines[i].y2 * Size + YPos); end; end; glEnd; end; procedure ResetAllLetters; var x: Integer; y: Integer; begin for x := Low(Letters) to High(Letters) do begin Letters[x].Length := -1; for y := 0 to Length(Letters[x].Lines) do begin with Letters[x].Lines[y] do begin x1 := 0; x2 := 0; y1 := 0; y2 := 0; end; end; end; end; function SetUpLine(xx1, yy1, xx2, yy2: Single): TLine; begin with Result do begin x1 := xx1; y1 := yy1; x2 := xx2; y2 := yy2; end; end; procedure SetupFont; begin ResetAllLetters; //Space Letters[32].Length := 0; // ! with Letters[33] do begin Length := 2; Lines[0] := SetUpLine(2, 0, 2, 1); Lines[1] := SetUpLine(2, 2, 2, 6); end; // Hier werden halt alle Buchstaben deklariert, sind insgesamt etwa 100 Stück, alle Fehlerfrei soweit end; initialization SetupFont; end. |
AW: Shape Wars - Version 1.0
Delphi-Quellcode:
do
for x := 0 to Length(Text)
muss
Delphi-Quellcode:
heissen
for x := 1 to Length(Text) do
|
AW: Shape Wars - Version 1.0
Und außerdem würde ich vorher noch prüfen, ob das Ord(Text[x]) im Wertebereich {32..129} liegt!
Delphi-Quellcode:
Aber da das performancetechnisch Probleme bereiten könnte, würde ich generell anfangs ein Checkup machen - dh. sicher gehen, dass alle Strings auch wirklich in dieser Menge enthalten sind!
with Letters[Ord(Text[x])] do
Edit: Der Quelltext ist vorhanden. Zumindest das Kernstück! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz