Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi open gl und 2d ? (https://www.delphipraxis.net/5929-open-gl-und-2d.html)

braingrenade 23. Jun 2003 16:08


open gl und 2d ?
 
Moin Leute !

Kann man mit opengl eigentlich auch nur 2d sachen machen ?
Ich hab schon nach tut's gesucht , aber die sind alle nur für 3d progging.

Weiß jemand ob's geht und wenn ja wie ich eine Tbitmap mithilfe von opengl darstellen kann (initialisieren von ogl kann ich schon)?

Chewie 23. Jun 2003 16:25

2D heißt ja, dass es zwei Ebenen gibt. Wenn die Koordinate für dei 3. Ebene immer den gleichen Wert hat, hast du im Prinzip 2 Dimensionen.

braingrenade 23. Jun 2003 16:46

Moin Chewie!

Das stimmt!

Aber weißt du wie ich ne Tbitmap ausgeben kann?

Mr_T 23. Jun 2003 19:02

Wie meinste das Mit der Tbitmap?
Hast du eine Bitmap als BMP auf der Festplatte oder haste eine Echtes delphi-Tbitmap?

Zum Theama 2d:
Ich würde an deiner Stelle aber nicht einfach nur auf die z-Koord verzichten, sondern ich würde das, was du normalerweise wenn du die Delphi VCl verwendest nach "Form1.FormResize" schreibst, durch dieses Ersetzen:

Delphi-Quellcode:
glViewport(0, 0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluOrtho2D(0,width,0,height);
glMatrixMode(GL_MODELVIEW);
Damit bist du in dem Ortho-Modus, was bedeutet, dass du 1. wirklich auf die 3. koord verzichten kannst (man nehme dann glvertex2f() ) und, dass der Bildschirm etwas anders eingeteil ist....
was ich damit sagen will:
nun ist der Ursprung links oben (oder unten.. bin mir nicht so sicher) und die Opengl-Koord (1024,768) genau gegenüber (bei einer Auflösung von 1024x768....) das macht das Programmieren gleich einfacher und auch wenn man irgendwas mit Mausklickt auf ein Obejkt realisieren will, fällt einem das so viel leichter....

braingrenade 23. Jun 2003 19:11

Moin Mr_T !


1.Also ich mein das mit ner echten Delphi TBitmap !

2. Genau so hat ich mir's Vorgestellt!

Ich hab auch irgendwo gehört das man mit opengl ne ziemlich schnelle Transparenz machen kann , weißt du wie ?

Mr_T 23. Jun 2003 19:58

Also die Sache mit dem Tbitmap ist echt kompliziert.. geht es auch anders?
(Was genau ist überhaupt dein Ziel?)
Tranzparenz geht recht einfach... (aber ich habe es in 2d nich nicht getestet....)
Falls du dich bereits etwas mit Texturen und den ogl-Basiks auskennst, kannste in nem dem 6. Teil eminer Ogl-Tut-Serie etwas über transparenz nachlesen (dies ist die Indexsite zu den Kursteilen: http://www.dcw-group.net/index.php?m.../oglkurs/index )

Aber wie gesagt: ich würde auf das Tbitmap verzicheten... oder, wenn es unvermeidbar ist, dass ein Tbitmap da ist, würde ich den Inhalt kurz Temporär in eine Bmp saven und dann in Ogl laden...
wenn man versucht für Open Gl eine BMP-Textur zu laden und die Richtigen Units verwendet, dann hat braucht man nämlich nur 3 Zeilen Quelltext dazu ... ich will nicht wissen, wie das mit dem tbitmap aussieht..... :P

braingrenade 23. Jun 2003 20:08

Also eigentlich bin ich gerade dabei ne Kollisions-abfrage zu programmieren , ursprünglich wollt ich sie mit delphix machen , aber da geht's nich so wie ich es will und außerdem gibts da schon den Tsprite.
Und opengl ist ja auch schneller und etwas unkomplizierter(in mancher hinsicht jedenfalls).

Es würde auch schon reichen wenn ich die bmps von der Festplatte lade,
welche units brauche ich da ?

Auskennen tu ich zwar noch nicht so , aber für ein tut bin ich immer zu haben !

Mr_T 23. Jun 2003 20:34

Also ich persönlich würde dir zur glbmp-Lib raten (ich weiß, ich verwende in meine Tuts ne andere, bin aber zur erkenntniss gekommen, das die Glbmp besser ist...)
Runterladen kannst du dir die hier:
http://www.cfxweb.net/~delphigl/projects/glbmp.htm

Das laden einer Textur von der Platte ist sehr einfach... zunächst brauchste ne GLOBALE Variable, welche die textur aufnehmen soll:
Delphi-Quellcode:
var
  Form1: TForm1;
  textur1 : tglbmp;
Ne Textur laden kannste dann so:

Delphi-Quellcode:
procedure loadTextures;
begin

textur1 := tglbmp.Create;
textur1.LoadImage('Dateiname');
textur1.GenTexture;
Wie man ein Quadrat zeichnet, weißte ja sicher...
naja: Ich verwende hier die Textur mal Beispielsweise an einem solchen:
Delphi-Quellcode:
procedure render;
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farb und Tiefenpuffer löschen
glLoadIdentity;
textur1.bind();
glbegin(gl_quads);
gltexcoord2f(0,0);
glvertex2f(1,1);
gltexcoord2f(0,1);
glvertex2f(1,10);
gltexcoord2f(1,1);
glvertex2f(10,10);
gltexcoord2f(1,0);
glvertex2f(10,1);
SwapBuffers(form1.myDC);
end;
Ps: ich habe vergessen zu erwähnen, dass man logischerweise noch bei "uses" "blmp" eintragen muss und die Libary in sein projektverzeichniss kopieren sollte...
Man kann mit dieser Lib im übrigen auch andere Bildformate lesen... um etwas Platz zu sparen sind z.b. jpgs manchmal ganz praktisch ;-)

braingrenade 23. Jun 2003 20:57

OPTIMAL!
sieht mal echt einfach aus !

Nun die letzte Frage :

Weißt du wie so eine bmp mit einer transparenten Farbe versehen kann?
(so wie bei Tbitmap)

P.S.: Die tuts von dir sind echt gut !

braingrenade 23. Jun 2003 21:00

Man sollte immer besser alles durchlesen!!

grad kuck ich's mir an und seh das glbmp das ja kann !!

gut gut !


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