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

Aktuelle Zeit: Fr Jul 11, 2025 03:28

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: selection ungenau
BeitragVerfasst: Do Jul 01, 2004 18:42 
Offline
DGL Member

Registriert: Do Jun 24, 2004 14:10
Beiträge: 11
Hallo,

ich hab ein bisschen mit gl rumgespielt geht auch schon ganz gut, bloß jetzt wollte ich was mit selection machn. das ganze ist ein programm das einfach ein schachbrett und ein paar figuren darstellt(quads+textur). ich verwende den selection code von eurem tut, bloß dass ich clientwidth+height auf das panel auf das ich ausgebe angepasst hab. wenn ich jetzt was anklick, sagt er noch nen cm neben dem schachbrett ich hätte drauf geklickt und wenn ich auf ne figur klick, dann sagt er auch ich hätte auf des schachbrett geklickt, wenn ich aber 2cm unter die figuren klick, sagt er ich hätte auf ne figur geklickt, obwohl da gar nix ist. weiß einer wo das problem sein kann?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 01, 2004 18:44 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das mit der verschiebung gabs schon paar mal hier im Forum. Ausm Kopf kann ich dir net helfen. Aber die Forumssuche sollte dir was bringen.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 01, 2004 18:58 
Offline
DGL Member

Registriert: Do Jun 24, 2004 14:10
Beiträge: 11
tut mir leid, ich glaub ich bin zu doof was zu finden, hab alle ergebnisse für selection, duchgeschaut, nach was muss ich denn suchn?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 01, 2004 19:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Gib in der Suchmaske mal selection AND problem ein, das gibt brauchbare Ergebnisse. Ansonsten tippe ich mal direkt darauf das du nicht darauf geachtet hast, dass der Ursprung bei OpenGL Unten/Links liegt, und nicht wie bei Windows Oben/Links. Das must du jedoch bei der Selektion beachten, ansonsten bekommst du auf der Y-Achse vermeintlich unkorrekte Ergebnisse.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 16:52 
Offline
DGL Member

Registriert: Do Jun 24, 2004 14:10
Beiträge: 11
Sry, aber ich find echt nichts was zu meinem Problem passt, auch unter google net


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 16:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hast du auch das nachgeprüft was ich oben gesagt habe? Deine Problematik lässt nämlich genau dadrauf schliessen, und das machen ehrlich gesagt sehr viele Leute falsch.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 17:03 
Offline
DGL Member

Registriert: Do Jun 24, 2004 14:10
Beiträge: 11
ich hab einfach mal testweiße genau den code von eurem tut mit c&p verwendet, aber ich weiß nicht, wo ich da was anpassen sollte

stell ich mich bloß so doof an oder bin ichs?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 17:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann poste mal die relevanten Codestellen, das hilft bei der Fehlersuche.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 18:07 
Offline
DGL Member

Registriert: Do Jun 24, 2004 14:10
Beiträge: 11
hier die selection:

Code:
  1. function tglform.Selection : integer;
  2. var
  3. Puffer       : array[0..256] of GLUInt;
  4. Viewport     : tvector4i;
  5. Treffer,i    : Integer;
  6. Z_Wert       : GLUInt;
  7. Getroffen    : GLUInt;
  8. begin
  9. glGetIntegerv(GL_VIEWPORT, @viewport);      //Die Sicht speichern
  10. glSelectBuffer(256, @Puffer);               //Den Puffer zuordnen
  11. glRenderMode(GL_SELECT);                    //In den Selectionsmodus schalten
  12. glmatrixmode(gl_projection);                //In den Projektionsmodus
  13. glPushMatrix;                               //Um unsere Matrix zu sichern
  14. glLoadIdentity;                             //Und dieselbige wieder zurückzusetzen
  15.  
  16.  
  17. gluPickMatrix(xs, viewport[3]-ys, 1.0, 1.0, viewport);
  18. gluPerspective(45.0, panel1.width/panel1.Height, 1, 100);
  19.  
  20.  
  21. render;                                     //Die Szene zeichnen
  22. glmatrixmode(gl_projection);                //Wieder in den Projektionsmodus
  23. glPopMatrix;                                //um unsere alte Matrix wiederherzustellen
  24.  
  25. treffer := glRenderMode(GL_RENDER);         //Anzahl der Treffer auslesen
  26.  
  27. Getroffen := High(GLUInt);                  //Höchsten möglichen Wert annehmen
  28. Z_Wert := High(GLUInt);                     //Höchsten Z - Wert
  29. for i := 0 to Treffer-1 do                  
  30. if Puffer[(i*4)+1] < Z_Wert then
  31.  begin
  32.  getroffen       := Puffer[(i*4)+3];
  33.  Z_Wert := Puffer[(i*4)+1];
  34.  end;
  35.  
  36.  Result := getroffen;
  37. end;
  38.  



und die render prozedur: hierbei ist drawfigs eine funktion, die nichts an der sicht verändert, sie hat bloß einige gltranslates und texturierte quads drin


[code
procedure tglform.render;
begin
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glloadidentity;
glinitnames;
glpushname(0);
glBindTexture(GL_TEXTURE_2D,turmr);
drawfigsr;


glBindTexture(GL_TEXTURE_2D,schachbrett);
glpushmatrix;
glloadidentity;

gltranslate(0,0,-2);
glloadname(2);
Glbegin(gl_quads);
gltexcoord2f(0,0);glVertex3f( 1 , 1, 0);
gltexcoord2f(0,1);glVertex3f( -1 , 1, 0);
gltexcoord2f(1,1);glVertex3f( -1 , -1, 0);
gltexcoord2f(1,0);glVertex3f( 1 , -1, 0);
glend;


SwapBuffers(DC);

end;
[/code]

das ist meine onidle:




Code:
  1.  
  2. procedure TGLForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  3. begin
  4. render;
  5. // Windows denken lassen, das wir noch nicht fertig wären
  6. Done := False;
  7. end;



danke schonmal für die geduld


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 18:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Da fehlt doch was sehr wichtiges : Wo setzt du denn deine Projektionsmatrix für dein normales Rendering? Ich habe das Gefühl das dein Problem daher rührt das dein gluPerspective fürs Pickung <> dem fürs Rendering ist. Wenn du dort z.B. bei der Selection ein FOV von 45° angibst, aber beim Rendern 60°C, dann gibts natürlich Probleme.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 02, 2004 18:20 
Offline
DGL Member

Registriert: Do Jun 24, 2004 14:10
Beiträge: 11
ich bin doch der größte trottel der rumläuft!

danke, genau der fehler! is echt ne tolle community hier! muss man mal sagn

thx!!!!

greets


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 18 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 | 16 Queries | GZIP : On ]