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

Aktuelle Zeit: Sa Jul 05, 2025 13:05

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Jan 15, 2011 15:03 
Offline
DGL Member

Registriert: Mi Jan 05, 2011 14:55
Beiträge: 47
Programmiersprache: Delphi, C++,C
Hi ich hab mein nächstes Problem. Und zwar hab ich das selektionstutorial durchgearbeitet, da ich versuche das bomberman tutorial komplett zu verstehen. Das problem ist nur, dass wenn ich einen wert auslese eimal nur quatsch rauskommt, da der wert meistens über 100000 liegt aber ich nur zahlen bis 10006 vergeben habe. Des weiteren hängt danach mein Programm und es reagiert nicht mehr auf eigaben. Das Tutorial, den Artikel und die checkliste hab ich mir alles durchgelesen und trotzdem kommt nichts vernünfiges dabei raus. Die Funktion zur selektion hab ich lecht verändert aus dem Artikel dazu übernommen.

Code:
function TForm1.Selection : integer;
var
  Puffer       : array[0..512] of GLUInt;
  Viewport     : TGLVectori4;
  Treffer,i    : Integer;
  Z_Wert       : GLUInt;
  Getroffen    : GLUInt;
begin
  glGetIntegerv(GL_VIEWPORT, @viewport);
  glSelectBuffer(512, @Puffer);
  glRenderMode(GL_SELECT);

  glMatrixMode(GL_PROJECTION);
  glPushMatrix;
  glLoadIdentity;

  gluPickMatrix(XS, Viewport[3] - YS, 1.0, 1.0, Viewport);
  gluPerspective(60, ClientWidth/ClientHeight, 1, 1000);

  form1.render;

  glMatrixMode(GL_PROJECTION);
  glPopMatrix;

  treffer := glRenderMode(GL_RENDER);

  if treffer > 0 then begin
    Getroffen := High(GLUInt);
    Z_Wert := High(GLUInt);
    for i := 0 to Treffer-1 do
      if Puffer[(i*4)+1] < Z_Wert then begin
        getroffen := Puffer[(i*4)+3];
        Z_Wert := Puffer[(i*4)+1];
      end;

  end;
  result := getroffen;
end;


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 15, 2011 18:13 
Offline
DGL Member

Registriert: Sa Okt 18, 2008 11:59
Beiträge: 180
Das Problem hatte ich auch mal, ich weiß aber nicht mehr wie ich es gelöst habe, da mich die Selektion noch nicht so interessiert hat (zumal ja von der OpenGL Selektion abgeraten wird).

Langsam lief es bei mir auch MANCHMAL.
http://wiki.delphigl.com/index.php/Selektion
Hier steht aber auch das es auf NVidia Grafikkarten so sein kann.

Sonst kann ich dir eigentlich auch nicht so wirklich weiterhelfen.
Höhstens noch den Tip die Parameter bei
gluPickMatrix(XS, Viewport[3] - YS, 1.0, 1.0, Viewport);
und
gluPerspective(60, ClientWidth/ClientHeight, 1, 1000);
zu überprüfen. Die sollte glaube ich nämlich nicht aus dem Tutorial herauskopiert werden. Wenn du beim Rendern andere Parameter für deine Perspektive wählst, dann solltest du es auch hier tun. Einfach rüberkopieren kannst du die nur, wenn du auch beim Rendern dieselben Parameter verwendest.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 15, 2011 19:06 
Offline
DGL Member

Registriert: Mi Jan 05, 2011 14:55
Beiträge: 47
Programmiersprache: Delphi, C++,C
Die info wegen der NVidia karten hab ich auch gelesen, aber ich dachte nicht, dass sich das Programm derwegen aufhängt. Ne die Werte kann ich ausschließen hab ich schon überprüft. Was gibt es denn sonnst noch für möglichkeiten?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 15, 2011 19:21 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Wenn es sogar von der Hardware her probleme mit OGL Selection gibt, ist das nur ein Grund mehr Colorpick o.Ä. zu verwenden.

Es gibt im Wiki ein Colorpicking Tutorial für Shader:

http://wiki.delphigl.com/index.php/Tuto ... lorPicking

Dort steht aber meines Wissens genügend Grundlageninformation drin, um das selbe auch ohne Shader zu realisieren.
Könnte jemand mit Edit-Zugriff aufs Wiki vielleicht mal einen Absatz einbauen, dass OGL Selection nicht sonderlich zu empfehlen ist und man eher auf Colorpicking zurückgreifen sollte?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 15, 2011 19:59 
Offline
DGL Member

Registriert: Mi Jan 05, 2011 14:55
Beiträge: 47
Programmiersprache: Delphi, C++,C
Ok danke für die Antwort. Dann ist warscheinlich auch die sellekion schuld daran, das der Mapeditor von dem Bomberman Tutorial bei mir nicht flüssig läuft obwohl ich ne gtx 260 hab. Hatte mich schon gewundert. Am besten sollten auch mal in die Grundlagen-Tutorials ein Verweiß geschrieben werden.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Jan 15, 2011 21:11 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Entsprechende Hinweise habe ich ergänzt. Eine Kurzzusammenfassung steht in Color Picking.

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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jan 16, 2011 00:17 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
ich kann auch nur zu colorpicking raten.
meine alte selektion (die mich ebenfalls viele nerven gekostet hatte, bis sie überhaupt funktionierte) hat auf meinem laptop bei einer großen baugruppe geschlagene 22 sekunden gebraucht. (aufm desktop pc warens ca. 1-2 sekunden) Das lustige dabei ist, dass die framerate auf dem laptop in der regel höher ist (neuere hardware) - seit ich jetzt auf colorpicking umgebaut habe geht es quasi in echtzeit.

Gruß

W.


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 7 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 | 15 Queries | GZIP : On ]