Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 04, 2025 15:55

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 31 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: nochmal wegen dem bewegen... *grinz*
BeitragVerfasst: Fr Jan 10, 2003 15:29 
also, ich bin nach einigen schwierigkeiten im orthomodus gelandet *g*

und nu hab ich das so gemacht:
Code:
  1. glClearColor(0,0,0,0);
  2.  
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4.  
  5.   glLoadIdentity;
  6.  
  7.   glMatrixMode(GL_PROJECTION);
  8.  
  9.  
  10.  
  11.   glLoadIdentity;
  12.  
  13.   glOrtho(0, 800, 600, 0, -1, 1);
  14.  
  15.  
  16.  
  17.   glMatrixMode(GL_MODELVIEW);
  18.  
  19.   
  20.  
  21.   glpushmatrix;
  22.  
  23.   glcolor3f(1,0.5,0);
  24.  
  25.   glbegin(gl_quads);
  26.  
  27.    glvertex2f(0,600);
  28.  
  29.    glvertex2f(0,0);
  30.  
  31.    glvertex2f(800,0);
  32.  
  33.    glvertex2f(800,600);
  34.  
  35.   glend();
  36.  
  37.   glpopmatrix;
  38.  
  39.  
  40.  
  41.   glpushmatrix;
  42.  
  43.   gltranslatef(x,y,0);
  44.  
  45.   glcolor3f(0,0.5,1);
  46.  
  47.   glbegin(gl_triangles);
  48.  
  49.    glvertex2f(380,580);
  50.  
  51.    glvertex2f(400,540);
  52.  
  53.    glvertex2f(420,580);
  54.  
  55.   glend();
  56.  
  57.   glpopmatrix;


Code:
  1. procedure TMainForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
  2.  
  3.   Shift: TShiftState; X, Y: Integer);
  4.  
  5.   var cursorpos: tpoint;
  6.  
  7. begin
  8.  
  9.   getcursorpos(cursorpos);
  10.  
  11.   x:=cursorpos.x;
  12.  
  13.   y:=cursorpos.Y;
  14.  
  15.  
  16.  
  17. end;


also das viereck wird gezeichnet, auch in der vollen breite, alles super, das dreieck wird auch gezeichnet, aber es bewegt sich nich auf klick :/


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 15:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
huhu

auf den ersten blick liegt es daran, das in der Procedure OnMouseDown ja eine Variable ist die X und Y heißt...

das heißt du überschreibst dort nur die Variablen der Procedur, NICHT die Globalen.. :)

Bennen einfach deine X und Y Variablen mal in MX und MY um.. dann sollte es gehen.

Au'revoir,
Aya~~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 15:43 
habs jetzt so gemacht
Code:
  1. lpushmatrix;
  2.  
  3.  
  4.  
  5.   glcolor3f(0,0.5,1);
  6.  
  7.   glbegin(gl_triangles);
  8.  
  9.    glvertex2f(mx-20,my+40);
  10.  
  11.    glvertex2f(mx,my);
  12.  
  13.    glvertex2f(mx+20,my+40);
  14.  
  15.   glend();
  16.  
  17.   glpopmatrix
  18.  
  19.  


im prinzip klappts auch...nur es wird nicht wirklich exakt an der cursorposition gezeichnet...


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 15:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ja, denn die Koordinaten 0,0 sind bei OpenGL Unten Links... bei Windows hingegen Oben Links :)

Deswegen mach einfach Deine FensterHöhe - MY

Ach und ausserdem bei deiner Procedure OnMouseMove:

Code:
  1.   MX:=X;
  2.  
  3.   MY:=Y;


Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
so ungefähr?

Code:
  1. glpushmatrix;
  2.  
  3.  
  4.  
  5.   glcolor3f(0,0.5,1);
  6.  
  7.   glbegin(gl_triangles);
  8.  
  9.    glvertex2f(mx-20,my+40);
  10.  
  11.    glvertex2f(clientwidth-mx,clientheight-my);
  12.  
  13.    glvertex2f(mx+20,my+40);
  14.  
  15.   glend();
  16.  
  17.   glpopmatrix;

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
So:

Code:
  1. glpushmatrix;
  2.  
  3.  
  4.  
  5.  &nbsp;glcolor3f(0,0.5,1);
  6.  
  7.  &nbsp;glbegin(gl_triangles);
  8.  
  9.  &nbsp; glvertex2f(mx-20,clientheight-my+40);
  10.  
  11.  &nbsp; glvertex2f(mx,clientheight-my);
  12.  
  13.  &nbsp; glvertex2f(mx+20,clientheight-my+40);
  14.  
  15.  &nbsp;glend();
  16.  
  17.  &nbsp;glpopmatrix;


Denn X ist bei OpenGL sowie bei Windows Links am Bildrand 0 :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
hm, also ich hab zumindest wieder ein dreieck :)

nur ist es nun so, wenn man weiter oben klickt erscheint das dreieck weiter unten, und umgekehrt, quasi wie ne spiegelung an der x-achse

salut ;)

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
öhm.. ups... :)

fehler von mir :oops:

Im OrthoMode ist 0,0 ja auch links oben... nur im PerspectiveMode nicht... bääh.. *g*

Code:
  1. glpushmatrix;
  2.  
  3.  
  4.  
  5.  &nbsp;glcolor3f(0,0.5,1);
  6.  
  7.  &nbsp;glbegin(gl_triangles);
  8.  
  9.  &nbsp; glvertex2f(mx-20,my+40);
  10.  
  11.  &nbsp; glvertex2f(mx,my);
  12.  
  13.  &nbsp; glvertex2f(mx+20,my+40);
  14.  
  15.  &nbsp;glend();
  16.  
  17.  &nbsp;glpopmatrix;


So geht's jetzt... also lag alles nur an den falschen X und Y Koordinaten...

*winkt*
Aya~~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
hm, entweder bin ich blöd oder da stimmt was nich, das is immer so 50 pixel vom mauscursor entfernt :/

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:34 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Setzt mal den BorderStyle von deinem Form auf bsNone...:)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
mag das vielleicht ein auflösungsproblem sein? weil das opengl fenster macht die auflösung wohl nicht automatisch an meiner vcl-form fest oder?

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
ne, automatisch macht OpenGL das nich.. :)

du mußt den Viewport halt jedesmal neu festlegen (bei jedem Resize)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
naja, im resize steht das schon mit cllientheight und width, aber ich meine wenn ich das ding starte...dann erscheint ja die von mir vorher festgelegte form, is das dann auch wirklich 800*600 ? ich mein das kann ja eigentlich nicht sein da es ja so angezeigt wird wie ich es eingestellt hab...

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:49 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Wie meinst du das???

Wenn deine Form von anfang an auf 800x600 eingestellt ist, mußt du natürlich auch deinen Viewport auf 800x600 einstellen... :)
(Aber da der OnResize-Event automatisch aufgerufen wird beim starten brauchste das net machen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 10, 2003 16:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jan 02, 2003 13:38
Beiträge: 104
Wohnort: Bremen
nene, ich mein wenn ich im ortho-modus 800,600 einstelle und auch meinen quader daran binde, rechnet der das automatisch auf das aktuelle fenster um? weil so wie das aussieht is das garantiert keine 800*600 gro0 :)

_________________
------------------------------------------------------- <br>Wer andern eine Brawurst brät, <br>hat ein Bratwurst Bratgerät...... <br> <br>So long, Howard ^^ <br>-------------------------------------------------------


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 31 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]