Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Textur in einen Poligone einfügen ? (https://www.delphipraxis.net/102028-textur-einen-poligone-einfuegen.html)

mimi 22. Okt 2007 13:55


Textur in einen Poligone einfügen ?
 
Hallo,
wie könnte ich in einen Poligone eine Textur einfügen ? so wie das hier passiert:
http://www.delphipraxis.net/internal...ct.php?t=97168

Das ganze müsste unter TBitMap laufen und auf Linux laufen.
Und Natürlich unter Lazarus.... aber ohne Scaneline, was sowas habe ich noch nicht.

edit: so wie das unter www.clonk.de passiert.......

mkinzler 22. Okt 2007 17:11

Re: Textur in einen Poligone einfügen ?
 
Warum kein OpenGL?

mimi 22. Okt 2007 17:31

Re: Textur in einen Poligone einfügen ?
 
Weil das unter Linux bei mir nicht richtig läuft, bzw. gar nicht läuft. Ich könnte noch SDL nehmen, aber das ist mir auch zu viel Aufwand.

Bzw. ich müsste mich erst einarbeiten.....

Khabarakh 22. Okt 2007 18:16

Re: Textur in einen Poligone einfügen ?
 
Eine Methode, um ein Polygon gleichfarbig auszufüllen, sollte es ja bereits geben. Dann zeichnest du damit ein weißes Polygon auf schwarzen Hintergrund und benutzt dieses als Bitmaske für deine Textur. Soll heißen: weißes Pixel -> Textur, schwarzes Pixel -> schwarz - also eine AND-Verknüpfung. Wenn du einen Alphakanal zur Verfügung hast, kannst du natürlich gleich diesen statt der Bitmaske benutzen.

mimi 22. Okt 2007 18:27

Re: Textur in einen Poligone einfügen ?
 
Ganz verstehe ich das noch nicht......

Ich weiß das ich ein Poligone mit einer Canvas Funktion z.b. Rot Zeichnen könnte.

den nächsten Schritte verstehe ich jetzt noch nicht: Unter Lazarus habe ich im Moment leider nur BitBtl zuverfügung oder draw von TCanvas, aber CopyRect hat leider einen BUG.....

Also, ich lade die Texttur in eine TBitMap rein. und wie soll sie jetzt in das Poligone kommen ?
Dann müsste ich praktisch ein Poligone aus dem TBitMap Kopieren.... oder verstehe ich was falsch ?
Wenn nicht, wie soll das gehen ? bisher habe ich immer nur Vierecke Kopiert, aber noch nie ein Polygone....

Oder müssen die Texturen ein bestimmtes Format haben ? z.b. sehr klein sein oder so.....

turboPASCAL 22. Okt 2007 21:20

Re: Textur in einen Poligone einfügen ?
 
Was willst du machen? Eine 3D-Anwendung ?
Wenn du ein Polygon mit einem Bitmap (die Textur halt) füllen möchtest für eine 2D-Anwendung
lade dir in das (Canvas.)Brush.Bitmap deine Textur.

Das diese dann aber Passend ( zB. Perspektivisch ) verzerrt wird kannst du vergessen. Dann darfst
du dir eine schöhne nette komplexe Funktion schreiben, natürluch mit einer gehörigen Portion
Mathematikverständnis.

Dann bekommst du für die 0815 GDI-Darstellung mehrerer Polygone ein super ruckeln da der Rechner sich für die massive CPU-Auslastung bedankt.

Tipp: Nimm OpenGL !

Florian H 23. Okt 2007 09:55

Re: Textur in einen Poligone einfügen ?
 
Hm mimi,
wenn ich deine Bemühungen bezüglich der Umgehung der Benutzung von OpenGL immer sehe, denke ich mir langsam, dass es bedeutend einfacher wäre, wenn du openGL auf deinem Rechner zum Laufen bekommst, anstatt die Alternativlösung auf Entwicklerebene zu suchen ;)

mimi 23. Okt 2007 15:28

Re: Textur in einen Poligone einfügen ?
 
Ihr habt natürlich recht, aber immer wenn ich versuche Opengl zum Laufen zu bringen, habe ich hinterher einen anderen Fehler, und OpenGL läuft immer noch nicht.....

Also der Linux befehl lspci: meint ich hätte folgende Grafik-Chip satzt:
Zitat:

00:00.0 Host bridge: VIA Technologies, Inc. VT8378 [KM400/A] Chipset Host Bridge
und die läuft leider nicht unter Linux...... bzw. nur Eingeschrängt. OpenGL ist sehr langsam....

Lossy eX 23. Okt 2007 16:23

Re: Textur in einen Poligone einfügen ?
 
Ohne passende Hardware/Treiber wird unter Linux eigentlich immer MesaGL benutzt was ausschließlich auf der CPU läuft. Allerdings wenn es sich dabei nicht gerade um einen NoteBook handelt dann wäre es denkbar noch eine extrerne Karte einzubauen. Die Kosten dafür liegen bei 20-30€ da es ja nicht state of the art sein muss. Was das und andere Probleme wohl gut lösen dürfte.

Aber zu dem eigentlichen Thema. Polygon ist da sicherlich etwas falsch ausgedrückt, denn dieses Clonk bzw bei Andora handelt es sich um 2 Dimensionale Anwednungen. Und eigentlich möchtest du ja nur eine Maske für ein Bitmap benutzen. Also mit anderen Worten ein Bild darstellen bei denen einige Stellen Transparent sind? Klar würde ich in jedem Falle zu OpenGL raten. Der ein oder andere weiß warum und es wäre auch wesentlich schneller und leistungsfähiger. Aber deine Frage sehe ich bei weitem nicht so kompliziert. Mag auch sein, dass ich mich da gerade voll vertue.

Aber würde es nicht ausreichen gewissen Teile der Bilder in einer Farbe zu füllen und dann diese Farbe als Transparentz einzustellen. Vorrausgesetzt Lazarus kann das.

mimi 23. Okt 2007 16:47

Re: Textur in einen Poligone einfügen ?
 
Zitat:

Aber würde es nicht ausreichen gewissen Teile der Bilder in einer Farbe zu füllen und dann diese Farbe als Transparentz einzustellen. Vorrausgesetzt Lazarus kann das.
Wie genau meinst du das ? Tranzparent geht.

Ich habe leider nur einen Laptop: Aspire 1350
Sonst hätte ich mir schon lägst eine neue Grafik Karte gekauft. die unter Linux besser läuft.....


Ich habe auch nur Intressehalber gefragt, weil ich es einfach mal wissen wollte wie sowas gehen könnte. und ich habe mich schon seit längern gefragt, wie das gehen könnte...

Nehmen wir mal ein Viereckiges Bild: Da währe es ja einfach(relativ gesehen)
ich habe eine Textur von 200*200 Pixeln.
und die Zeichne ich per Draw oder wie auch immer auf das Viereck drauf.....
Praktisch gesehen wie ein Raster.

Aber bei einem Polygone kann ich mir das immer noch nicht vorstellen, weil ich bisher immer nur mit Vierecken arbeite. Es müsste doch möglich sein einen bestimmten bereich aus einer TBitMap einfach rauß zukopieren, so wie bei Paint: Ich gebe ein Polygone ein, welches dann aus der angeben TBitMap rauß kopiert wird.....

Allerdings, müsste die Grafik an die Größe des Polygones angepasst werden, und genau hier kommt das Problem ins spiel: Ein Polygone muss ja nicht immer ein Viereck sein, es kann aussehen wie es möchte, d.h. ich müsste die Textur zuschneiden oder ? aber wie ?

Mir geht es eigentlich nur um das Prinzip. Ich möchte das jetzt nicht in einen 2D Spiel einsetzten oder in einer anderen Anwendung, evlt. später. Aber erstmal möchte ich nur wissen, wie das gehen könnte ohne OpenGL oder DX. Ich weiß damit währe es einfacher. SDL könnte ich unter Lazarus zum Laufen bringen, währe das ein ersatzt ? für openGL ? weil SDL läuft ohne Probleme z.b. SuperTux verwende es ja....

Aber am liebsten währe mir das per TCanvas... weil ich nutze es sehr viel im Moment, bei jeder Gelegenheit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz