Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL Einsteiger Frage (https://www.delphipraxis.net/81237-opengl-einsteiger-frage.html)

ferby 23. Nov 2006 20:05

Re: OpenGL Einsteiger Frage
 
Hallo,

danke es klapt wunderbar,
hätte ich vorher schon gewußt das es so einfach ist^^


schön wie du dich um mich kümmerst :-D


Eine letzte Frage habe ich noch,
dann sollte ich mal so weit sein,
mein erstes kleineres Programm zum schreiben:

Ich habe mir mit

Delphi-Quellcode:
  glBegin(GL_Quads);

  glcolor3f(1,0,0);

  glVertex3f(0,0,0);
  glVertex3f(1,0,0);
  glVertex3f(1,1,0);

  glVertex3f(0,1,0);
  glEnd;
ein Viereck gemacht.


Mit
Delphi-Quellcode:

glrotatef(100,0,1,0);
Kann ich es um eine Achse drehen.

Also in diesen Fall um die y-Achse.




Um eine bestimmte Achse zu bestimmen, um die sich etwas drehen soll, braucht man einen Punkt + Vektor.

Der Vektor ist in meinen Fall (0/1/0) und der Punkt (0/0/0).

Wie ich den Vektor ändern kann versteh ich

Delphi-Quellcode:
glrotatef(100,0,1,0);
=

glrotatef(Grad,Vektor_x,Vektor_y,Vektor_z);


Aber wie kann ich den Punkt ändern?

Ich meine wie kann ich eine Linie angeben, um die das Viereck rotieren soll, die nicht vom 0/0/0 Punkt ausgeht?



Hoffe ich habe mein Problem gut genug erklärt.

Corpsman 23. Nov 2006 20:39

Re: OpenGL Einsteiger Frage
 
Also kleiner Hoffnungschimmer.

Das "Game" war mein 1. OpenGl Project. Damit habe ich OpenGL gelernt und genau gesagt lerne ich es ja eigentlich immer noch. Da mir der schatten ja leider immer noch fehlt :(

zu Deiner Frage.

Probier mal

Delphi-Quellcode:
Type T3dPoint = Record
x,y,z:single;
end;
var
yangle,rotpoint:T3dPoint;
begin

..

gltrangslatef(-rotpoint.x,-rotpoint.y,-rotpoint.z);
glrotatef(angle,0,1,0);
gltrangslatef(rotpoint.x,rotpoint.y,rotpoint.z);
..

End;
Wenn ich dich Richtig verstanden habe müste das deiner Frage entsprechen.

ferby 24. Nov 2006 17:28

Re: OpenGL Einsteiger Frage
 
Hallo,

ja das wars danke.


So jetzt hab ich schon wieder eine Frage :-D



Wenn ich mit

Delphi-Quellcode:
  glVertex3f(0,0,0);
  glVertex3f(1,0,0);
  glVertex3f(1,1,0);
  glVertex3f(0,1,0);
ein Viereck mache, und ich drehe es, dann sieht man, das das Viereck keine "dicke" hat, es ist dünn wie Pappier.

Kann ich irgendwie eine "dicke" machen, also zum Beispiel ein Quader, oder einen anderen 3D Körper?

turboPASCAL 24. Nov 2006 18:04

Re: OpenGL Einsteiger Frage
 
Nein. Wenn dann musst du einen Quader bauen um einen Dicke darzustellen.

ferby 24. Nov 2006 19:23

Re: OpenGL Einsteiger Frage
 
HI,

das hab ich eh schon gemacht,
dachte es geht einfache :-(


Aber ein anderes problem, ich lade jetzt so Texturen

Delphi-Quellcode:
procedure TForm1.InitTextur;
begin
  LoadTexture('1.jpg', textur1);
  LoadTexture('2.jpg', textur2);
end;

Und so dann auf die Flächen

Delphi-Quellcode:
glBegin(GL_Quads);

  glBindTexture(GL_TEXTURE_2D,textur1);

  glTexCoord2f(0, 0);
  glVertex3f(0,0,0);
  glTexCoord2f(0, 1);
  glVertex3f(1,0,0);
  glTexCoord2f(1, 1);
  glVertex3f(1,1,0);
  glTexCoord2f(1, 0);
  glVertex3f(0,1,0);

  glBindTexture(GL_TEXTURE_2D,textur2);

  glTexCoord2f(0, 0);
  glVertex3f(0,0,1);
  glTexCoord2f(0, 1);
  glVertex3f(1,0,1);
  glTexCoord2f(1, 1);
  glVertex3f(1,1,1);
  glTexCoord2f(1, 0);
  glVertex3f(0,1,1);

  glEnd;
Aber bei beiden Flächen wird die Textur 1 angezeigt, warum?
Bzw. wie mach ich es richtig?

Corpsman 24. Nov 2006 19:55

Re: OpenGL Einsteiger Frage
 
Kan grad nur raten, aber mach mal den GLQuad Mode zwischen drin zu und wieder auf

Delphi-Quellcode:
  glcolor4f(1,1,1,1);
  glBindTexture(GL_TEXTURE_2D,textur1);
  glBegin(GL_Quads);
  glTexCoord2f(0, 0);
  glVertex3f(0,0,0);
  glTexCoord2f(0, 1);
  glVertex3f(1,0,0);
  glTexCoord2f(1, 1);
  glVertex3f(1,1,0);
  glTexCoord2f(1, 0);
  glVertex3f(0,1,0);
  glEnd;

  glBindTexture(GL_TEXTURE_2D,textur2);
  glBegin(GL_Quads);
  glTexCoord2f(0, 0);
  glVertex3f(0,0,1);
  glTexCoord2f(0, 1);
  glVertex3f(1,0,1);
  glTexCoord2f(1, 1);
  glVertex3f(1,1,1);
  glTexCoord2f(1, 0);
  glVertex3f(0,1,1);
  glEnd;
Übrigens wenn ind GLcolor4f andere werte sind kannst du deine Texturen damit ein wenig "einfärben" ;)

ferby 24. Nov 2006 20:11

Re: OpenGL Einsteiger Frage
 
Hallo,

danke so gehts.

So jetzt probier ich aber echt mal ein kleines Spiel,


kann man eigentlich bei den Texturen aktivieren, das sie Transparent sein sollen?

Corpsman 25. Nov 2006 06:50

Re: OpenGL Einsteiger Frage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja und Nein,

Das geschieht dann über einen Aplha Kanal.

In Balanced mache ich das zumindest so.

da es dafür aber noch Kein Sample auf meiner HP Gibt. habe ich dir einfach mal die entsprechende Unit aus Balanced hochgeladen.

Sie ist aber nicht Kommentiert :(

Für Dich Wichtig ist die Klasse "TOpenGL_Transparent_Image" denn die Zeigt wie man das Macht.

turboPASCAL 25. Nov 2006 14:35

Re: OpenGL Einsteiger Frage
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich tuh Dir auch mal ein Peispiel trann stellen. :mrgreen:

Ein VCL - OpenGL Sample mit Licht, Material und Texturing sowie einfaches Blending bzw. Transparenz.

Alle gebrauchten Dateien sind mit dabei. (hoff ich mal :stupid: )

ferby 28. Nov 2006 00:31

Re: OpenGL Einsteiger Frage
 
Hallo,

ich habe mir beide Lösungen angeschaut,
aber ich glaub das ist doch zuviel für den Anfang,
ich werde mal mit einfachen Sachen anfangen.




Wie macht man eigentlich eine Kugel?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.
Seite 2 von 2     12   

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