![]() |
Re: Zeichenfläche für Spiele
Ok, ich weiß zwar nicht, warum da ein Fehler kommt (bei mir dann auch), aber einer gute Alternative ist es, einfach bei deinem DXDraw die Eigenschaft Align auf alClient zu setzen und dann deinem Form die Eigenschaften Borderstyle = bsNone (achtung, die Knöpfe zum Minimieren und schließen verschwinden, also bau schon mal eine Methode zum schließen ein) und windowState = wsMaximized setzen.
Ergibt auch ein Vollbild. Die Auflösung kannst du mit Display setzen und die Einstellungen dort funktionieren ohne Fehler. |
Re: Zeichenfläche für Spiele
Also ich würde dir an dieser Stelle dann echt mal zu irgend einer Alternative raten. Ich muss mal sagen, die Doku von DelphiX die ich gerade lese ist echt mehr als mässig. Und letztlich sollten dir Komponenten für DirectX irgendeine Arbeit abnehmen. Hab da allerdings nicht wirklich die große tolle Alternative die ich dir empfehlen kann, aber die dürfte nicht viel Suche erfordern.
Hab zuletzt mit GLScene gearbeitet, aber ist a) OpenGL und b) Hilfe gibt es nicht wirklich (also kein API oder so), aber es war auch für ein paar Spezielle Probleme und nicht für ein Spiel, egal. Nimm lieber etwas, was ein wenig mehr bietet als DelphiX und vor allem etwas was keine Fehler schmeist |
Re: Zeichenfläche für Spiele
Gute Idee, nur was? OpenGL habe ich schon verwendet, ich hoffte eigentlich, dass DelphiX etwas mehr benutzerfreundlich ist.
Primär will ich Benutzerfreundlichkeit, sekundär wäre es sehr gut, wenn man 3D Effekte wie Kantenglättung hätte und Prozeduren zum Zeichnen von Primitiven schon vorhanden wären. |
Re: Zeichenfläche für Spiele
3D Effekte hättest du natürlich nur, wenn dein Spiel auch 3D wird, oder? Also ich weiß nicht ob du dir natives OpenGL oder eine Kapselung angeschaut hast. Bei GLScene hast du einen Echten kleinen Editor bei, bei dem du halt wirkich alle Standardformen direkt zu Designzeit anlegen kannst (z.B. Rechtecke, Kugeln, Pipes (mit beliebig vielen Punkten), Sprites, Kegel, ...) Und auf die ganzen Komponenten greifst du halt wie auf andere Delphi-Objekte zu. Die wichtigen Eigenschaften dort sind in der Regel TurnAngle, PitchAngle, dritte Achse gibts auch, mir fällt der Name nicht ein. Dann gibt es sowas wie die Eigenschaft Position.X, Position.Y, Position.Z (erklärt sich sicher von selbst) und du kannst natürlich auch AntiAliasing einstellen. Gibt natürlich noch jede Menge mehr, aber ist halt Geschmacksache. Insbesondere fehler echte Schrifttypen (3D) in OpenGL, wurden in der Spezifikation nicht vorgesehen. Müsstest du halt gucken, ob du damit zu recht kommst oder ob es eine gute DirectX Kapselung gibt.
Würde dir googlen nach DirectX + Delphi empfehlen oder hier in der DP nach DirectX suchen. Findest du bestimmt auch was. Ansonsten nettes kleines Spiel. Wann hast du das gemacht? Hat aber natürlich so seine Kleinigkeiten (die es sympatisch machen), in Runde 7 hat er bei mir mal kurz ne Pause eingeschoben, dann flackert das Bild leicht und 60% CPU Last ist auch mal nett :wink: , aber wirklich, nettes Programm! |
Re: Zeichenfläche für Spiele
Das habe ich vor 1-2 Monaten gemacht. Und ich habe DelphiGL verwendet, hatte den Nachteil, dass man jedes Polygon von Hand zeichnen musste und das Antialiasing furchtbar aussah. Und dann noch dieses unglaubliche Ruckeln, nachdem man 10 Polygone gezeichnet hat... (Battlefield 1942 und JediKnight 2 laufen ohne Probleme)
|
Re: Zeichenfläche für Spiele
Zitat:
Denkt mal nach, OpenGL ist ein gemeinschaftsprodukt von verschiedenen Firmen die Hardware herstellen, wenn Microsoft versucht OpenGL abzuschiessen wird dennen das nicht gefallen! Und wenn alle an einem Tisch sitzen, können sie auch sagen: Wir unterstützen die nächste DirectX Version nicht, und dann hat Microsoft ein Problem. Zudem wird OpenGL in einiger Zeit in Version 3.0 erscheinen, und dann kann sich meiner Meinung nach das Machtverhältniss gewaltig verschieben! |
Re: Zeichenfläche für Spiele
-- Edit: Sry 4 Doppelpost, aber er zeige mir keinen Post an?!?! --
|
Re: Zeichenfläche für Spiele
OK, ich hol den Thread nochmal hoch.
Ich habe mir jetzt mal eine kleine OpenGL-WinAPI Engine geschrieben und habe nun folgendes Problem: Für 2D Spiele wirkt es für mich etwas überladen, alle Grafiken als Texturen zu laden und dann als glQuads zu zeichnen. Daher: Gibt es keine Klasse oder irgendwas in der Art (ne API oder so) mit der ich einfach ähnlich wie auf einem Canvas zeichnen kann? Das TDXDraw bei UnDelphiX ist für mich komplett unverständlich, wie ich da zeichnen soll. Die Tutorials, die ich gefunden habe, sind veraltet und der Code kann nicht kompiliert werden. |
Re: Zeichenfläche für Spiele
Wieso empfindest Du das laden von Texturen unter OpenGL für 2D-Bereiche zu überladen? Immerhin ist das definitiv das, was man heutzutage als Königsklasse der 2D-Programmierung ansehen kann, da die Informationen von der durchaus (meist) leistungsstarken GPU verarbeitet werden kann und damit halt auch alle damit verbundenen Tricks ermöglicht. Schreibt man sich dafür ein paar Hilfsfunktionen wird das ganze sogar unglaublich konfortabel und man kann selbst lästige Dinge wie das Z-Sorting komplett von OpenGL übernehmen lassen. Oder ging es Dir darum die Grafiken als Texture zu laden und diese nicht über einen Canvas zu zeichnen? Seien wir mal ehrlich. Wer ein Spiel schreibt wird kaum einen Canvas verwenden, einfach weil das Pixeln in einem Bildbearbeitungsprogramm viel leichter ist. Auch würde dies bei einer Rotation zusätzlichen Aufwand bedeuten, den man ja gerade Dank OpenGL (meist) nicht hätte. Z.B. ein Raumschiff von oben müßte nur noch in einer Richung gezeichnet werden und könnte dann ganz leicht rotiert werden. Alles Vorteile, die die 3D-Welt für die 2D-Welt mit sich bringt.
Auf die Gefahr hin, dass Du bisher noch nicht einen Blick in die Tutorials von DGL geworfen hast: ![]() |
Re: Zeichenfläche für Spiele
Naa, ich zeichne immer die Bilder aus ner Imagelist auf ein Canvas.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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-2025 by Thomas Breitkreuz