Was ich bisher gemacht habe:
- lazopenglcontext über Projektinspektor hinzugefügt.
Code: Alles auswählen
uses lazopenglcontext, gl, glu
Code: Alles auswählen
var OpenGLControl1: TOpenGLControl;
Code: Alles auswählen
OpenGLControl1:=TOpenGLControl.Create(Form1);
with OpenGLControl1 do begin
Width:=800;
Height:=800;
end;
Code: Alles auswählen
Procedure TForm1.TimerTimer(Sender: TObject);
begin
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f (0.0, 1.0, 0.0);
glVertex2f (-0.5, -0.5);
glVertex2f (+0.5, -0.5);
glVertex2f (+0.5, +0.5);
glVertex2f (-0.5, +0.5);
glEnd;
OpenGLControl1.SwapBuffers;
end;
Bisher habe ich an Canvas jedoch einige Anforderungen gehabt, bei denen ich noch nicht weiß, wie ich sie mit OpenGL umsetzen kann. Dazu zählen:
- Mehrere separate Zeichenflächen: Es soll eine Szene aus mehreren Blickwinkeln dargestellt werden. Dazu habe ich einfach mehrere Bitmaps mit Canvas benutzt, die über die unterschiedlichen Namen der Bitmaps separat angesprochen werden konnten. Bei den gl-Funktionen steht hingegen nicht dabei zu welcher OpenGLControl sie gehören. Sie scheinen einfach auf die erste erschaffene bezogen zu werden. Wie kann man separat mit mehrere OpenGLControls arbeiten?
- Verdeckte Zeichenflächen im Hintergrund: Manche Bitmaps habe ich lediglich dazu verwendet um auf ihnen nach einer Zeichnung die Farben an bestimmten Positionen zu messen. Sichtbar waren diese Bitmaps jedoch nicht. Wie kann ich eine OpenGLControl verstecken?
- Farben habe ich mit Canvas.Pixels[x,y] gemessen und dann mit einer TColor verglichen. Z. B. so:
Code: Alles auswählen
if Bitmap1.Canvas.Pixels[100,100]=RGBToColor(R,G,B) then
- Beschriftung: Wie gebe ich Text mit OpenGL aus? Mit Canvas kann ich z. B. auch Schriftgröße und Schriftart festlegen. Wie geht das mit OpenGL?
Neben einer höheren Geschwindigkeit kann OpenGL auch Schnick-Schnack wie Kantenglättung bieten. Hat für mich zwar momentan keine Priorität, aber gibt es vielleicht eine einfache Möglichkeit Kantenglättung anzuschalten?