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

Aktuelle Zeit: Fr Jul 11, 2025 09:07

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Selection
BeitragVerfasst: Mi Nov 26, 2003 14:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Mein Selection funktioniert nicht. Wenn ich die Zeile
Code:
  1. glTranslatef(Position.x,Position.y,Position.z);
weg lasse funktionier es. Muss ich auf was achten?

Meine gesamte Zeichen Routine
Code:
  1.  
  2.   FOpenGLSettings.Clear([0.5,0.5,0.5]);
  3.  
  4.   glLoadIdentity;
  5.   glEnable(GL_TEXTURE_2D);
  6.  
  7.   glTranslatef(Position.x,Position.y,Position.z);
  8.   GFrustum.Calculate;    
  9.   MapLoader.DrawLevel;
  10.  
  11.   SwapBuffers(FDC);
  12.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2003 14:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Was heißt "funktioniert nicht"? Beschreibe mal dein Problem bitte ein wenig genauer? Kommt total stumpfsinniges Zeugs raus? Geht gar nichts mehr? ...

Zu dem Translate. Was steht in Position drinne? Berücksichtigst du das auch bei der Selektion und beim Rendern? So wie ich vermute tust du das nämlich nicht. Aber ist nur ne Vermutung.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2003 14:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Lossy eX hat geschrieben:
Was heißt "funktioniert nicht"? Beschreibe mal dein Problem bitte ein wenig genauer?

Es kommt immer der Rückgabewert -1 bei der Funktion GetSelectBufferHit

Lossy eX hat geschrieben:
Zu dem Translate. Was steht in Position drinne?

x=0
y=2
z=-10

Lossy eX hat geschrieben:
Berücksichtigst du das auch bei der Selektion und beim Rendern?

Ja


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2003 14:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Befindest du dich auch in der richtigen Matrix? Sehe dazu oben nämlich nichts. Stell auch sicher, das deine Perspektive sowohl beim normalen Rendern als auch im Selektionsmodus gleich sind.
Ansonsten ist bei so wenigen Informationen mal wieder schwer ne Hilfestellung zu geben...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2003 15:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
ich glaube schon das alles ok ist den wenn ich ja die glTranslatef weg lasse funktioniert alles.
vielleich helfen ja die gnazen sourcen
Code:
  1.  
  2. procedure TfrmDraw.Draw;
  3. begin
  4.   FOpenGLSettings.Clear([0.5,0.5,0.5]);
  5.  
  6.   glLoadIdentity;
  7.   glEnable(GL_TEXTURE_2D);
  8.  
  9.   glTranslatef(Position.x,Position.y,Position.z);
  10.   GFrustum.Calculate;    //Fustum
  11.   MapLoader.DrawLevel;
  12.  
  13.   SwapBuffers(FDC);
  14. end;
  15.  


Code:
  1.  
  2. function TfrmDraw.GetSelectBufferHit: Integer;
  3. var
  4.   SelectBuffer : array[0..512] of TGLUInt;
  5.   Viewport     : opengl12.TVector4i;
  6.   Hits,i       : Integer;
  7.   HitZValue    : TGLUInt;
  8.   Hit          : TGLUInt;
  9. begin
  10.   glGetIntegerv(GL_VIEWPORT, @viewport);
  11.   glSelectBuffer(512, @SelectBuffer);
  12.   glRenderMode(GL_SELECT);
  13.   glInitNames;
  14.   glPushName(0);
  15.   glMatrixMode(GL_PROJECTION);
  16.   glPushMatrix;
  17.   glLoadIdentity;
  18.   gluPickMatrix(mx, viewport[3]-my, 2.0, 2.0, viewport);
  19.   gluPerspective(45.0, ClientWidth/ClientHeight, 0.1, 1000);
  20.   Draw; //!!!!
  21.   glMatrixMode(GL_PROJECTION);
  22.   glPopMatrix;
  23.   Hits := glRenderMode(GL_RENDER);
  24.   DeactivateRenderingContext;
  25.   Hit       := High(TGLUInt);
  26.   HitZValue := High(TGLUInt);
  27.   for i := 0 to Hits-1 do
  28.     if SelectBuffer[(i*4)+1] < HitZValue then begin
  29.       Hit       := SelectBuffer[(i*4)+3];
  30.       HitZValue := SelectBuffer[(i*4)+1];
  31.     end;
  32.   Result := Hit;
  33.   glMatrixMode(GL_MODELVIEW);
  34. end;
  35.  


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2003 15:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn das der komplette Quellcode ist, dann vergisst du doch was ganz wichtiges : Du wechselst nämlich zum Zeichnen deiner Szene gar nicht erst in die Modelansichtsmatrix, sondern renderst ganz einfach in die Projektionsmatrix. Das darf man natürlich nicht machen. Korrigier das dann ggf. mal und probier aus obs dann klappt.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 26, 2003 15:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Klappt :lol: Danke :D


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


Wer ist online?

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