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

Aktuelle Zeit: Sa Jul 05, 2025 19:45

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Selection
BeitragVerfasst: Di Aug 25, 2009 11:15 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Hi,
ich hab mal folgende Frage zu eurem Selection-Tutorial...

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


so sieht mein Quelltext dazu aus, funktioniert auch :)

Mein Problem ist jetzt aber, dass wenn ich durch die Welt in dem 2D-Spiel laufe, und nebenbei auf Grund von Mouse-Events die Funktion benutze, ruckelt es immer kurz... Gibt es noch eine effektivere Methode als die Selection von eurem Tut? Oder kann man diese noch irgendwie optimieren? Mit Puffer verkleinern hab ichs schon probiert, klappt nich :(

cuz bubble

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 25, 2009 11:28 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ja. Wir sind momentan gerade dabei ein Einsteiger-Color-Picking Tutorial zu veröffentlichen.
Hier ist die Vorabversion: viewtopic.php?t=8572&start=0&postdays=0&postorder=asc&highlight=

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 25, 2009 16:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das Problem liegt in der schlechten Unterstützung des (uralten) Selektionsmodus von OpenGL. Heute wird der häufig in Software ausgelagert (= langsam), weshalb es zu den rucklern kommt.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 26, 2009 15:35 
Offline
DGL Member
Benutzeravatar

Registriert: So Jan 07, 2007 21:26
Beiträge: 130
Wohnort: mal hier mal da mal irgendwo
Wui, das Tut ist echt gut:shock:, vllt noch nen bssl unverständlich formuliert, aber für das Verständnis der Selektion ist es echt gut :)

vor allem ist die methode simpel und effektiv :)

naja dann guck ich mal dass ich diefür mich umsetzbar machen kann ;P

_________________
Wenn Worte nichts als Worte sind,
dann müssen's Steine sein!
Solange - bis sie pleite sind - schmeißt Fensterscheiben ein!

- Fidl Kunterbunt -


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.007s | 14 Queries | GZIP : On ]