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

Aktuelle Zeit: Mo Jul 21, 2025 08:06

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 29 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2003 20:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Mit dieser Änderung lässt sich leider gar nix mehr auswählen ...

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2003 20:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Ach shit is ja logisch *patsch*

Ich hol meine Mauskoordinaten aus Panel1.MouseMove (mx = x, my =y)

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2003 20:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Damit wird zwar nix selektiert, aber du siehst für ne halbe Sekunde lang den Ausschnitt den du angeklickt hast, und kannst so einfacher feststellen was schief läuft.Ausserdem hab ich die Nearclippingplane auf 1 hochsetzen müssen, da es sonst Probleme gibt.

Das hab ich doch gesagt das sich damit nix mehr selektieren lässt...alllerdings kannst du so sehen, ob deine Klicks auch da landen wo sie hin sollen.So wird die Fehlersuche bei deinem Problem weitaus leichter.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2003 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Alzheimer hat geschrieben:
Ach shit is ja logisch *patsch*

Ich hol meine Mauskoordinaten aus Panel1.MouseMove (mx = x, my =y)

Damit wollte ich Dir zum Ausdruck bringen, dass ich bemerkt habe, dass sich damit nichts selektieren lässt. (Wie geschrieben) wird mit abnehmender z-Achse (also weniger als -1.5) die Selektion in beide Achsenrichtungen verschoben. Der Source ist nach wie vor <a href='http://www.onkeltortysfiles.de/selektion.zip' target='_blank'>hier</a>. Wenn Du mir helfen willst, dann schau ihn Dir doch einfach mal an. Ansonsten werde ich es irgendwann mal rausfinden ... jedenfalls lasse ich die z-Achse jetzt fixiert, da damit eine Selektion zumindest möglich ist ... Sollte mir der letzte Nerv reissen, dann schnapp ich mir wieder mein C++ und wechsle eben wieder zu DirectX, denn da gibts zum Thema Selektion keine Probleme ...

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 19, 2003 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Du solltest bei den gluPerspective Kommandos während der Darstellung und während der Selektion auch tatsächlich den selben Field Of View Parameter verwenden.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2003 05:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Habe jetzt mal auf <!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPerspective(<span class='integer'>60.0</span>,panel1.Width/panel1.Height,NearClipping,FarClipping);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3--> geändert. Die Clipping - Daten sind in
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>const</span>
FarClipping = <span class='integer'>1000.0</span>;
NearClipping = <span class='integer'>1.0</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
Leider ist das Ergebnis unverändert.

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2003 09:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hab mich grade durch den Quellcode gewühlt, und glaube dein Problem gefunden zu haben.Bei mir klappt die Sache mit der Felderauswahl jetzt nämlich unabhängig von der Zoomstufe fast Pixelgenau.Das Problem lag hier :
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>function</span> TForm1.GetSelectionBufferHit : Integer;
[...]
// Hier übergibst du die CLIENT-Dimensionen (richtig)
gluPerspective(<span class='integer'>60.0</span>,Panel1.ClientWidth/panel1.ClientHeight,<span class='integer'>0.1</span>,<span class='integer'>1000</span>);
[...]
// Hier übergibst du allerdings die Dimensionen des Panels MIT RAND (falsch)
SetupViewport(v1DC,RC1,Panel1.Width,Panel1.Height);
<span class='reserved'>end</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

So wie du es machst, haben der Viewport zur Selektion, und der den du zur Anzeige nutzt nämlich zwei verschiedene Dimensionen (zwar nur minimal unterschiedlich, aber trotzdem).Daraus entsteht dann anscheinend auch den Problem, denn wenn du die letzte Zeile in deiner Selektionsroutine durch
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>SetupViewport(v1DC,RC1,Panel1.ClientWidth,Panel1.ClientHeight);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->
ersetzt, dann klappts (zumindest bei mir ) pixelgenau.Natürlich darfst du auch nicht vergessen, wie Mars schon sagt, bei deinen gluViewport-Aufrufen auch immer das selbe FOV anzugeben.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2003 16:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
PENG ! :o Ich habe mich gerade erschossen ...
Lieber lieber Son of Satan ... sei doch so lieb und schick mir mal den von Dir modifizierten Source an meine EMail : \[EMAIL=web.master.noba@freenet.de\]web.master.noba@freenet.de\[/EMAIL\] Der Grund hierfür sind folgende Bilder :
Bild
(geschossen bei z: -2.4)

Bild
(geschossen bei z:-3.4)

Sorry, aber auch mit den neuen Modifikationen zerren sich die Achsen in beide Richtungen .... (der rote Kreis markiert die Mausposition beim Klick und der Strich zeigt zum selektierten Feld).

Vielleicht hat ja mein Compiler nen Virus ... oder ich :o ... oder wir beide :P

Ich hab mir Dein SelectionTut mal vorgeknöpft und hab mir erlaubt, z mal auf 700 zu stellen (bei allem, was darüber ist, sieht man die Sonne nicht mehr) und siehe da ... man konnte einwandfrei alles selektieren ...

Also wenn Ihr mir jetzt keinen Rat mehr geben könnt, dann schreibe ich das ganze nochmal neu ... vielleicht funtzts ja dann ...

@ SoS nimm mal das Progg. Dann schalte im Hauptmenü auf die höchste Zoom-Stufe und geh mit den Pfeiltasten ganz nach rechts oben. Wenn Du das oberste rechte Feld selektieren kannst, ohne dass du mit dem Mauszeiger 2 x 2 Felder weiter rechts unten bist, dann hat mein Delphi echt ne Macke weg ... oder wie gesagt vielleicht sogar ich :P

Ich habe jetzt nochmal den gesamten Source <a href='http://www.onkeltortysfiles.de/selection.zip' target='_blank'>hier</a> hochgeladen, falls jemand einen Blick reinwerfen will ...

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2003 16:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
So...habs grad mit dem von mir modifiziertem Quellcode probiert, und kann selbst bei höchster Zoomstufe und ganz nach oben rechts verschobener Map alle Felder pixelgenau selektieren.Dort wo ich hinklicke, wird auch selektiert.

Da ich eigentlich nichts ausser dem was ich oben gepostet hab geändert hab, weiss ich jetzt auch nicht wo dran es liegt.Als Anhang gibts hier aber mal die geänderte main.pas.
Wenns damit nicht klappt, dann stimmt irgendwas mit deinen Grafiktreiber nicht...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 20, 2003 17:47 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
Hi,

Alzheimer, habe mir mal dein Programm geholt und kann bestätigen, das die Selektion nicht korrekt verläuft. Je weiter rechts das Feld steht, desto mehr muss man zum rechten Rand des Feldes gehen, damit das Feld unter der Maus und nicht das links daneben liegende Feld ausgewählt wird.

@SoS
Nachdem ich deine geänderte main.pas eingespielt habe, hat es korrekt funktioniert.

Nur als Gegenprobe.

Gruß
KidPaddle

_________________
http://www.seban.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 21, 2003 13:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Habe mir jetzt auch die Main.pas gezogen und nachdem ich sie eingespielt habe, hat es auch bei mir korrekt funktioniert ... :lol: So ... ich werde mich jetzt mal vor meinen Compi pflanzen und nachforschen, warum es jetzt funktioniert (ich habe die alte Main.pas vorher kopiert) ... ich poste dann nochmal

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 21, 2003 14:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Sodala nachdem ich die beiden Sourcecodes durch den hauseigenen Interpreter in meiner Birne laufen hab lassen, hab ich folgende Unterschiede festgestellt :

(Zeile 12 und 13 vorher)
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>const</span>
//Entfernung der Clipping planes
FarClipping = <span class='integer'>1000.0</span>;
NearClipping = <span class='integer'>1.0</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 12 und 13 nach SoS: )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre><span class='reserved'>const</span>
//Entfernung der Clipping planes
FarClipping = <span class='integer'>256</span>;
NearClipping = <span class='integer'>1</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 164 im PixelformatDescriptor vorher : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>cDepthBits = <span class='integer'>16</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 164 im PixelformatDescriptor nach SoS : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>cDepthBits = <span class='integer'>32</span>;</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

Dann haben wir noch ...
(Zeile 226 bei SetupViewport vorher : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPerspective(<span class='integer'>60.0</span>,width/height,NearClipping,FarClipping);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 226 bei SetupViewport nach SoS : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPerspective(<span class='integer'>45.0</span>,width/height,NearClipping,FarClipping);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 265 bei FormShow vorher : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>SetupViewport(v1DC,RC1,Panel1.Clientwidth, panel1.Clientheight);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 265 bei FormShow nach SoS : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>SetupViewport(v1DC,RC1,Panel1.width, panel1.height);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Ich hab bei mir mal aus width clientwidth und aus height clientheight gemacht ... die (neu gewonnene) Präzision bleibt die gleiche ...)

Des weiteren ....
(Zeile 343 in function GetSelectionBufferHit vorher : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPerspective (<span class='integer'>45.0</span>, Panel1.Clientwidth/Panel1.clientheight,<span class='integer'>0.1</span>,<span class='integer'>1000</span>);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->

(Zeile 343 in function GetSelectionBufferHit nach SoS : )
<!--pas--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Delphi-Source </td></tr><tr><td id='CODE'><!--pas1--><pre>gluPerspective (<span class='integer'>45.0</span>, Panel1.Clientwidth/Panel1.clientheight,<span class='integer'>1</span>,<span class='integer'>1000</span>);</pre><!--pas2--></td></tr></table><span class='postcolor'><!--pas3-->


Also war bei mir FarClipping mit 1000 statt 256 zu groß, der Tiefenbuffer nur mit 16 Bit statt 32 unterwegs, dann fovy auf 60 statt auf 45 und zNear auf 0.1 statt auf 1 ? :blink: :o

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 21, 2003 14:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Also war bei mir FarClipping mit 1000 statt 256 zu groß, der Tiefenbuffer nur mit 16 Bit statt 32 unterwegs, dann fovy auf 60 statt auf 45 und zNear auf 0.1 statt auf 1 ?


Von dir genanntes hat eigentlich nix mit dem Selektionsproblem zu tun, und hab ich nur zum Testen verändert.Bis auf die Sache mit dem FOVY (siehe unten) dürften diese Änderungen keine Auswirkung auf die Selektion haben.

@Farclipping :
War nur ein Test.Klappt auch mit 256.Da der Z-Puffer allerdings (AFAIK) linear ist, wird der mit steigender Reichweite ungenauer.Bei einer Z-Reichweite von 256 dürfte dieser deshalb genauer sein als bei einer Reichweite von 1000.

@Tiefenpuffer :
Wenn man 24Bit oder 32Bit bekommen kann, dann sollte man sich die auch nehmen.Wenn diese nicht zur Verfügung stehen, wählt der Treiber automatisch das nächste passende Format aus.Hier würde ich prinzipiell immer 32 Bit verlangen.

@FovY :
Ob 60° oder 45° spielt keine Rolle.Allerdings sollte dein FOVY in deinem Programm IMMER GLEICH SEIN.Du hattes da aber zwei gluPerspective drin, mit jeweils zwei unterschiedlichen FOVY!

@zNear :
Auch nicht unbedingt nötig.Klappt bei mir auch mit zNear=1, was im Allgemeinen auch empfehlenswerter ist.Die 0.1 war nur ein Test.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 21, 2003 15:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 18:50
Beiträge: 92
Na wenigstens hauts jetzt hin ... das mit dem FOVY hab ich gar net bemerkt ... *klatsch* :blink: ... jetzt weisst Du wenigstens, warum ich Alzheimer heisse :P

_________________
http://www.onkeltorty.net
http://sourceforge.net/projects/simpleassembler


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 30 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 ]