Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX - Textur Engine (https://www.delphipraxis.net/54686-delphix-textur-engine.html)

igel457 9. Okt 2005 19:54


DelphiX - Textur Engine
 
Hallo,

in meinem Strategierspiel (siehe hier) verwende ich bisher nur eine Bodentextur.

Wie mache ich es jetzt aber am besten, wenn ich eine zweite Textur (einen Weg, Schlamm etc.) hinzufügen will :?:

Mein Problem ist, dass meine zweite Textur eckig ist und das bescheuert aussieht...

Wie kann ich also meine eckigen zweittexturen irgendwie "smoother" auf meine Karte bringen, ohne tausende Bilder verwenden zu müssen, für die übergänge und so? :gruebel:

Danke für eure Antworten! :)

Speedmaster 9. Okt 2005 20:16

Re: DelphiX - Textur Engine
 
Ehrlich gesagt bin ich der Meinung das sich DelphiX dafür weniger Eignet!
Mit OpenGL oder DirectX wäre das kein Problem!

Such mal nach Blending!

Tubos 9. Okt 2005 20:21

Re: DelphiX - Textur Engine
 
Zitat:

Mit OpenGL oder DirectX wäre das kein Problem!
Ja wie macht man es denn wenn man OpenGL oder DirectX direkt anspricht? Wie begründest du deine Aussage?

Speedmaster 9. Okt 2005 20:22

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von Tubos
Zitat:

Mit OpenGL oder DirectX wäre das kein Problem!
Ja wie macht man es denn wenn man OpenGL oder DirectX direkt anspricht? Wie begründest du deine Aussage?

Blenden oder Shader benutzen! B.z.w. allgemeines Stichwort ist Multitexturing!

igel457 9. Okt 2005 20:25

Re: DelphiX - Textur Engine
 
Auf OpenGl umzusteigen ist mir zu umständlich.

Meine Grafik wir (dank UnDelphiX) ja sozusagen schon mit der 3D Hardware dargestellt, halt nur als Sprites.

Da das ganze also quasi 3D ist, könnte man da nichts machen?

Speedmaster 9. Okt 2005 20:29

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von igel457
Auf OpenGl umzusteigen ist mir zu umständlich.

Meine Grafik wir (dank UnDelphiX) ja sozusagen schon mit der 3D Hardware dargestellt, halt nur als Sprites.

Da das ganze also quasi 3D ist, könnte man da nichts machen?

Gehen tut es sicherlich irgendwie, die Frage ist allerdings ob dein Spiel nacher noch Spielbar ist, und wie gut es aussieht!
Das Umsteigen auf OpenGL zumindestens sollte eigentlich ein kleineres Problem sein wenn du deine Engine gut Programmiert hast!

Für .NET könnte ich sogar einen Beta-Header liefern der zahlreiche Funktionen von OpenGL gekapselt hat!

igel457 9. Okt 2005 20:33

Re: DelphiX - Textur Engine
 
Hab leider kein .NET fähiges Delphi... :(

Kann ich vieleicht nur meinen Terrain irgendwie in 3D darstellen und darüber meine Figuren legen.
Gibt es da ein Tutorial wie man sowas mit DirectX und Delphi machen kann? (UnDelphiX verwendet ja auch die Standart JEDI DirectX headers, also sollte es doch kein Problem sein UnDelphiX und DirectX in 3D zu vermischen.) Oder sehe ich das falsch?

Speedmaster 9. Okt 2005 20:45

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von igel457
Hab leider kein .NET fähiges Delphi... :(

Kann ich vieleicht nur meinen Terrain irgendwie in 3D darstellen und darüber meine Figuren legen.
Gibt es da ein Tutorial wie man sowas mit DirectX und Delphi machen kann? (UnDelphiX verwendet ja auch die Standart JEDI DirectX headers, also sollte es doch kein Problem sein UnDelphiX und DirectX in 3D zu vermischen.) Oder sehe ich das falsch?

Naja, du könntest notfalls in einer anderen Sprache dich versuchen, da gibts kostenlose IDE's die auch besser sind wie die Delphi IDE!

Allerdings sollte es kein Problem sein sich Delphi 2005 PE zu besorgen! ;-)

Über Tutorials weiss ich nichts, habe ja eigentlich keine Ahnung von DelphiX, ich Sammle nur aus den Posts von Leuten die DelphiX benutzen allgemeine Informationen!


Aber keine Garantie des für meine Antworten! :mrgreen:

Oxmyx 9. Okt 2005 22:04

Re: DelphiX - Textur Engine
 
Die einfachste und praktikabelste Lösung ist sicherlich, verschiedene grafische Elemente zu machen für die verschiedenen Bodenarten. Alles andere ist weitaus komplizierter.

igel457 10. Okt 2005 14:37

Re: DelphiX - Textur Engine
 
Ist es überhaupt möglich, auf recht einfachem Weg mit OpenGl oder Direct3D so "Texturmaps" zu machen?
Soweit ich weiß, ist das auch nicht das einfachste.

Aber wenn ich mir es Recht überlege, mache ich den Boden von meinem Spiel in 3D, und zeichne darauf meine 2D Typen.
Das sollte doch gehen. (Ich habe es hinbekommen im Hintergrund einen Quader anzuzeigen und im Vordergrund meine Spriteengine.)
Frage ist nur (und weshalb ich das alles Versuche) ob ich da zwei Texturen (wie in Warcraft oder was weiß ich für 3D Spielen) zu vermischen, da ich nich tausende Grafiken dafür haben will. Das das mit 3D vermutlich vielkomplizierter ist, ist mir klar.

Außerdem habe ich auf Neobrothers ein Tutot gefunden wie das geht.

Speedmaster 10. Okt 2005 14:43

Re: DelphiX - Textur Engine
 
Mit OpenGL geht das einfach! Du gibst für jeden Punkt an wie Stark die Textur zu sehen sein soll, und dannach einfach Blending anschalten! Das sind wenig Befehle!

Spoon 10. Okt 2005 16:42

Re: DelphiX - Textur Engine
 
Liste der Anhänge anzeigen (Anzahl: 1)
Naja so einfach ist das nicht...

Wenn er einfach den alpha-wert der textur verändert dann scheint ja immernoch die viereckige Textur durch. Er bräuchte also (wie in moderenen Spielen auch) mehrere Layer an Texturen, sowie eine Alphamap (z.B. ein gezeichneter Weg) und müsste dann diese alle miteinander verrechnen. Hab mal angehängt wie ich das meine :)

Ich glaube ich würde dir auch zu kleinen Bildchen raten, denn alles andere ist imho sehr kompliziert :|

Speedmaster 10. Okt 2005 18:55

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von Spoon
Naja so einfach ist das nicht...

Wenn er einfach den alpha-wert der textur verändert dann scheint ja immernoch die viereckige Textur durch. Er bräuchte also (wie in moderenen Spielen auch) mehrere Layer an Texturen, sowie eine Alphamap (z.B. ein gezeichneter Weg) und müsste dann diese alle miteinander verrechnen. Hab mal angehängt wie ich das meine :)

Ich glaube ich würde dir auch zu kleinen Bildchen raten, denn alles andere ist imho sehr kompliziert :|

Es ist einfach, und da er ja anscheinend nicht mit Höhen & Co Arbeitet dürfte es wirklich kein Großer Aufwand sein, aber um die Wertevergabe kommt er so oder so nicht rum( Alphawert )!

igel457 10. Okt 2005 20:41

Re: DelphiX - Textur Engine
 
Zitat:

Es ist einfach, und da er ja anscheinend nicht mit Höhen & Co Arbeitet dürfte es wirklich kein Großer Aufwand sein, aber um die Wertevergabe kommt er so oder so nicht rum( Alphawert )!
Erstens: Höhen sollen (irgendwann) auch mal noch rein. Mein Problem ist: Wie Zeichne ich so eine schöne Alpha überblendung. Das ganze sollte auch noch recht performant sein.

Momentan gehe ich mit meinem Hintergrund so vor:
Delphi-Quellcode:
procedure TBackgroundRenderer.Render;
var px,py:integer;
begin
  px := trunc(engine.X) mod ftextures.Items[0].Width;
  py := trunc(engine.Y) mod ftextures.Items[0].height;
  with buffer.canvas do
  begin
    draw(px,py,texbuff);
  end;
end;
Render wird nur aufgerufen, wenn sich der Hintergrund verändert. (Also scrollt).
Textbuff ist ein TBitmap Buffer, der die Haupttectur enthält und etwas größer als der Bildschirm ist. Dieser wird dann in den Buffer geschriben.

Gezeichnet wird das dann so:
Delphi-Quellcode:
procedure TBackgroundRenderer.DoDraw;
begin
  with engine.surface.canvas do
  begin
    draw(0,0,buffer);
    release;
  end;
end;
Es wäre im Endefekt also kein Problem auf den "Buffer" das geblendete Bild jedesmal wenn ich das Bild verschiebe zu malen. Das ginge recht schnell. Nur wie rendere ich das mit dem Alpha am besten?

Oxmyx 10. Okt 2005 20:51

Re: DelphiX - Textur Engine
 
Multitexturing (das, was hier anklingt) ist eine vergleichsweise komplizierte Sache, viel komplizierter als die Lösung mit vielen kleinen Tiles (Bildchen).

Du solltest erstmal deine Grafikdarstellung auf dieses System umstellen, indem du dein Spielfeld in ein 2D-Array aufteilst und in die einzelnen Rechtecke schöne bunte Bilder zeichnest.

Speedmaster 10. Okt 2005 20:59

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von Oxmyx
Multitexturing (das, was hier anklingt) ist eine vergleichsweise komplizierte Sache, viel komplizierter als die Lösung mit vielen kleinen Tiles (Bildchen).

Du solltest erstmal deine Grafikdarstellung auf dieses System umstellen, indem du dein Spielfeld in ein 2D-Array aufteilst und in die einzelnen Rechtecke schöne bunte Bilder zeichnest.

Also von Kompliziert weiss ich nichts! Kannst du genauer sagen warum du meinst es ist Kompliziert?

Oxmyx 10. Okt 2005 21:02

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von Speedmaster
Also von Kompliziert weiss ich nichts! Kannst du genauer sagen warum du meinst es ist Kompliziert?

Sagen wir einfach, ich habe schon ein bisschen Erfahrung mit 3D-Programmierung gesammelt.

Phobeus 10. Okt 2005 21:06

Re: DelphiX - Textur Engine
 
Also, wenn Multitexturing etwas kompliziertes ist, dann müßte ich übermässig genial sein (und viele andere auch) ;)
Sorry, aber das mußte ich einmal in den Raum werfen und dazu gleich noch einmal einen Link in unsere Wiki, bei dem evtl. auch die Verlinkungen unten auf das Detail-Map-Beispiel von Interesse sein könnte: DGLWIKI - Multitexturing
//edit: Immerhin sehe ich es nicht alleine so. Man sollte zugegeben einige Tage für die Grundlagen investieren und dies werden im 3D-Bereich ein paar mehr als im 2D sein. Letztendlich umgeht man allerdings viele "dreckige" Tricks um die Grenzen des Systems zu umgehen.
Zwar handelt es sich in dem gegebenen Fall um ein 2D-Beispiel, allerdings sollte den Fragesteller klar sein, dass jedes Alpha-Blending, dass er planmäßig durch seinen Kopf zuckend hat er einen Schritt in Richtung GPU-Verarbeitung und damit einen Schritt in Richtung OpenGL oder Direct3D macht.
Relativ gute Ergebnisse (ich rede Technisch von 1998) im 2D-Bereich erzielte man jedoch auch durchaus mit zufällig positionierten Quads über einem Terrain, dass geblendet wird. 10-20 solcher Felder (je kleiner, desto besser) sollten durchaus auch ohne GPU möglich sein und immerhin ein wenig Abwechslung auf die Karte zaubern.
Davon abgesehen sieht das Zielprojekt doch immerhin nach etwas vielversprechenden aus. Bleibe er seinem Projekt in jedem Falle treu ;)

Oxmyx 10. Okt 2005 21:10

Re: DelphiX - Textur Engine
 
Leute, jetzt bleibt mal auf dem Boden. Der Threadersteller ist eindeutig noch Anfänger, und hat sich noch nicht in eine 3D-API eingearbeitet. Wenn hier jetzt vorgeschlagen wird, er solle Multitexturing benutzen, dann ist das tatsächlich eine "vergleichsweise komplizierte Sache" (mein Wortlaut), wenn er wohl schon genug Probleme haben wird, eine einfache Tile-Engine auf die Beine zu stellen.

igel457 11. Okt 2005 15:01

Re: DelphiX - Textur Engine
 
Ich lasse das mit dem 3D ersteinmal, vieleicht später :gruebel:.
Ich hab noch eine Idee bekommen wie ich das machen könnte, mal ausprobieren. :gruebel:

Zitat:

Der Threadersteller ist eindeutig noch Anfänger
Danke. Ich bin aber nicht ganz so unbeholfen wie ich aussehe... :)

Oxmyx 11. Okt 2005 15:41

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von igel457
Danke. Ich bin aber nicht ganz so unbeholfen wie ich aussehe... :)

Jeder ist in irgend einer Thematik noch Anfänger, ist doch ganz normal. Ist doch nichts abwertendes.

Speedmaster 11. Okt 2005 15:43

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von Oxmyx
Leute, jetzt bleibt mal auf dem Boden. Der Threadersteller ist eindeutig noch Anfänger, und hat sich noch nicht in eine 3D-API eingearbeitet. Wenn hier jetzt vorgeschlagen wird, er solle Multitexturing benutzen, dann ist das tatsächlich eine "vergleichsweise komplizierte Sache" (mein Wortlaut), wenn er wohl schon genug Probleme haben wird, eine einfache Tile-Engine auf die Beine zu stellen.

3D muss nicht sein, man kann mit OpenGL auch wunderschöne 2D Anwendungen schreiben die im 3D-Look sind!
Dazu gibt es ein schönes Tutorial:
http://delphigl.com/script/do_show.p...ngl2d&action=2

Ich finde das du dem Threadersteller einen schrecken einjagst! Rendern von 2D Objekten, sowie 3D Objekten ist wirklich keine große Kunst. Ich Persönlich habe sogar mir die Tutorials zum großen Teil nur Theoretisch durchgelesen, und diese zu einem Späteren Zeitpunkt dann aus der Theoretischen Grundlage in mein Programm übertragen!

Ich glaube kaum das jemand der mit DelphiX soetwas was er bereits auf den Bildschirm gezaubert hat irgendwelche Probleme mit OpenGL hat!

Und nochmal:
OpenGL ist nicht sofort 3D!

Oxmyx 11. Okt 2005 16:12

Re: DelphiX - Textur Engine
 
Doch, selbst wenn man die Vertextransformationspipeline nicht benutzt und seine Vertizes selbst als XYZRHW-Vertizes transformiert, bleibt es echtes 3D.

Speedmaster 11. Okt 2005 16:50

Re: DelphiX - Textur Engine
 
Zitat:

Zitat von Oxmyx
Doch, selbst wenn man die Vertextransformationspipeline nicht benutzt und seine Vertizes selbst als XYZRHW-Vertizes transformiert, bleibt es echtes 3D.

Aber das heisst nicht das du mit den Problemen die man mit 3D haben mag arbeitest!

glVertex2f ist doch eindeutig 2Dimensional oder?

igel457 12. Okt 2005 13:58

Re: DelphiX - Textur Engine
 
Gut Leute, ich hab mir das Tutorial von Oben mal angeschaut, scheint nicht allzu schwer zu sein...
Ich denke ich werde mein Spiel jetzt erstmal so zum Laufen bringen und dann versuche ich eine "Bessere" Version mit mit OpenGl und 3D Terrain.

Ich bleibe momentan lieber noch ein wenig bei meinem DelphiX. :)

Mit meinen Texturen ist mir auch (mal bis jetzt) eine ganz passable Lösung eingefallen: Clipping.
Da kann ich ja einfach nur einen Polygon "freigeben". Egal ob meine Textur eckickg oder sonst was ist. :zwinker:

Ich weiß allerdings das das mit dem "Richtigem" Alphablending viel besser aussieht. :( (Hab mal ne Weile mit Ogre gearbeite, ist allerdings für C++).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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