Hallo liebe Forumsmitglieder,
ich möchte während der Laufzeit meines Programmes durch Klicken der Leertaste einen Punkt in mein OpenGLControl1Paint hinzufügen.
Im anliegenden Code habe ich gesagt, beim Betätigen der Leertaste soll sich der Wert einer boolschen Variable ändern und daraufhin der Punkt im Timer erstellt werden,
weil ich dachte, er müsse vielleicht im Timer erstellt werden. Wenn ich den Punkt als Anweisung direkt nach der Tastenabfrage setze, passiert auch nichts.
Außerdem bewegt sich mein grüner Block auch nach links oder manchmal nach rechts, wenn ich die Leertaste drücke, obwohl ich diese Aktion an die linke/rechte Pfeiltaste gebunden hab.
Ich hoffe, mir kann jemand sagen, worin mein Fehler liegt oder was ich noch versuchen kann.
Punkt durch Tastatur erstellen
-
- Beiträge: 30
- Registriert: So 30. Okt 2016, 21:13
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Punkt durch Tastatur erstellen
- Dateianhänge
-
- unit1.pas
- (3.75 KiB) 78-mal heruntergeladen
-
- Beiträge: 6914
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Punkt durch Tastatur erstellen
Du hast du das Prinzip von OpenGL nicht richtig verstanden, was das Neuzeichnen betrifft.
Guck mal am besten das Beispiel im Anhang an, dort sieht man gut, wie dies funktioniert. Auch sieht man dort gut, das man eine Mesh über Matrizen bewegt.
Dort hat es auch 2 Rechtecke mit Texturen, welche sich unabhängig drehen.
Dein links und recht gehört in ein glTranslate und nicht in glVertex3f. glTranslate macht eine Verschiebung in der Matrix.
Ich hoffe, das dir dieses Beispiel weiter helfen kann. ansonsten einfach weiter fragen.
Guck mal am besten das Beispiel im Anhang an, dort sieht man gut, wie dies funktioniert. Auch sieht man dort gut, das man eine Mesh über Matrizen bewegt.
Dort hat es auch 2 Rechtecke mit Texturen, welche sich unabhängig drehen.
Dein links und recht gehört in ein glTranslate und nicht in glVertex3f. glTranslate macht eine Verschiebung in der Matrix.
Ich hoffe, das dir dieses Beispiel weiter helfen kann. ansonsten einfach weiter fragen.
- Dateianhänge
-
Texturen_rechteck_Bitmap.tar.gz
- (128.03 KiB) 78-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 30
- Registriert: So 30. Okt 2016, 21:13
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Punkt durch Tastatur erstellen
Vielen Dank für deine Antworten auf meine zahlreichen Fragen!
Ich habe da noch ein neues Problem, das mit dem hier wahrscheinlich in Verbindung steht.
Es handelt sich um ein 2D-Array aus BitButtons. Dieses müsste sich auf dem Bildschirm von links
nach rechts bewegen, dann nach unten und wieder nach links. Ich habe versucht, den left / top Wert
der Buttons im Timer zu ändern, woraufhin ich aber nur einen External-Fehler bekomme...
Hast du hierfür auch einen Rat, wie ich das lösen kann?
Vielen Dank im Voraus!
Ich habe da noch ein neues Problem, das mit dem hier wahrscheinlich in Verbindung steht.
Es handelt sich um ein 2D-Array aus BitButtons. Dieses müsste sich auf dem Bildschirm von links
nach rechts bewegen, dann nach unten und wieder nach links. Ich habe versucht, den left / top Wert
der Buttons im Timer zu ändern, woraufhin ich aber nur einen External-Fehler bekomme...
Hast du hierfür auch einen Rat, wie ich das lösen kann?
Vielen Dank im Voraus!
- Dateianhänge
-
- unit1.pas
- (4.54 KiB) 69-mal heruntergeladen
-
- Beiträge: 6914
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Punkt durch Tastatur erstellen
Was willst du mit den Buttons innerhalb von OpenGL ?Es handelt sich um ein 2D-Array aus BitButtons.
Wen du diesIch habe versucht, den left / top Wert
der Buttons im Timer zu ändern, woraufhin ich aber nur einen External-Fehler bekomme...
Code: Alles auswählen
for i:= 0 to 9 do begin
for j:= 0 to [color=#FF0000][b]4[/b][/color] do begin
Code: Alles auswählen
for x := 0 to max.x - 1 do begin //For-Schleife die das Array beim Programmstart erzeugt
for y := 0 to max.y - 1 do begin
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot