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

Aktuelle Zeit: Mi Jul 09, 2025 07:26

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Mi Aug 30, 2006 13:49 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
Tach tach allerseits,

So, mich vorgestellt, Projekt vorgestellt, und jetzt ?
Na Logo, die ersten Fehler vorstellen :lol: , äh Fragen stellen.

Ich hab in meinemProg ein Quad, auf welchem ich dann mein Menü in Form einer Textur aufbringe (2D-Modus).
Dann schreib ich Text drauf , und zwar damit (TTExtFont kommt aus dem Bomberman-Tut)
Code:
  1. procedure TMain_Menu.DrawText;
  2. var a : integer;
  3. begin
  4.   for a := Low( CMenuNamen ) to High( CMenuNamen ) do     // Alle möglichen Menüeinträge schreiben
  5.     if a = idx then
  6.       TextureFont.Print2D( Center( CMenuNamen[a]),
  7.                            [80, CMenuYPos[a], 0],
  8.                            [34/255,200/255,17/255],
  9.                            1 * SokobanGame.MenuBlend,
  10.                            1)                             // hellgruenen Text anzeigen
  11.     else
  12.       TextureFont.Print2D( Center( CMenuNamen[a]),
  13.                            [80, CMenuYPos[a], 0],
  14.                            [6/255, 84/255, 3/255],
  15.                            1 * SokobanGame.MenuBlend,   // Menublend = 0..1 zum Ausblenden
  16.                            1);                            // dunkelgruenen Text anzeigen
  17.  
  18.  

\":!:\" Nicht über die komischen Farbangaben wundern, die sind einfach nur aus Corel gelesen(0..255) und aus Faulheit mal schnell als division eingetragen worden.
Dieser Source hier ist aus dem Bomberman-Tut und schreibts dann ..
Code:
  1. // =============================================================================
  2. //  TTexFont.Print2D
  3. // =============================================================================
  4. procedure TTexFont.Print2D(pText : String; pPosition, pColor : array of Single; pAlpha, pScaleFactor  : Single);
  5. begin
  6. glDisable(GL_DEPTH_TEST);
  7. FontTexture.Bind;
  8. glColor4f(pColor[0], pColor[1], pColor[2], pAlpha);
  9. glPushMatrix;
  10.  glTranslatef(pPosition[0],pPosition[1],pPosition[2]);
  11.  glScalef(pScaleFactor, pScaleFactor , pScaleFactor);
  12.  glListBase(FontBase);
  13.  glCallLists(Length(pText), GL_BYTE, Pointer(pText));
  14. glPopMatrix;
  15. glColor4f(1,1,1,1);
  16. glEnable(GL_DEPTH_TEST);
  17. end;
  18.  

Das ist dann soweit auch okay und funktioniert super.
Dann Hab ich mir ein Quad gebastelt, auf dem ein Pfeil abgebildet ist (Textur) und benutze ihm als Mauszeiger.

Jetzt die erste Frage:
Wenn ich diesen "Mauszeiger" im 2dimensionalen Raum verschiebe (OnMouseMove des TForms), und möchte daß das Menü damit reagieren soll, wie stell ich das an? Kollision ? geht das mit angezeigten Textausgaben, oder sollte ich die Schrift als Textur auf ein Quad setzen ?

und die zweite Frage:
Im unteren hochgeladenen Bild ist gut zu erkennen , dass sich der "Quad"Mauszeiger hinter der Schriftausgabe des Menüs befindet. Ist das Grundsätzlich so? Habe schon alles mögliche Versuch (Reihenfolge der Anzeige) zu ändern, aber er bleibt immer dahinter.

..und weils so schön ist \":wink:\"
gleich noch ne dritte Frage:

Auf selbigen BildUpload sieht man auch in dem roten Kreis einen schwarzen Strich. Wie gesagt, ist alles nur 2D (glaub Orthomodus genannt). Die beiden Spiralen wandern langsam immer von oben nach unten und zurück. Dabei tritt dann dieser Effekt auf, daß an der oberseite kurzzeitig ein schwarzer Strich erscheint. Die Spiralen sind ebenfalls Texturen auf eine Quad, und werden um einen Pixel jeweils bewegt.

hier mal der Source falls nötig:
Code:
  1. procedure TMain_Menu.BewegeRinge;
  2. const
  3.  LmaxY   = 365;          // Schrittweitenbegrenzung der Ringebewegung
  4.  RmaxY   = 335;
  5.  LminY   = 140;
  6.  RminY   = 155;
  7.  
  8.  LPosY   = 18;
  9.  rOffset = 277;          // aktuelle Linke und rechte RingePosition
  10.  
  11. var
  12.   a, RingPos : integer;
  13. begin
  14.   if RingPosLeft < LminY then begin
  15.     RingPosLeft := LminY;
  16.     LRichtung := -LRichtung;
  17.   end else
  18.     if RingPosLeft > LmaxY then begin
  19.       RingPosLeft := LmaxY;
  20.       LRichtung := -LRichtung;
  21.     end;
  22.   if RingPosRight < RminY then begin;
  23.     RingPosRight := RminY;
  24.     RRichtung := -RRichtung;
  25.   end else
  26.     if RingPosRight > RmaxY then begin
  27.       RingPosRight := RmaxY;
  28.       RRichtung := -RRichtung;
  29.     end;
  30.   RingPosLeft := RingPosLeft + (RingTimeFactor * LRichtung * SokobanGame.TimeFactor);
  31.   RingPosRight := RingPosRight + (RingTimeFactor * RRichtung * SokobanGame.TimeFactor);
  32.  
  33.   TextureManager.BindTexture('Ringe');                 // Texture fuer die Ringe laden
  34.   glEnable( GL_ALPHA_Test);
  35.   glEnable( GL_BLEND );
  36.   glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
  37.   glColor4f(1,1,1,0.45 * SokobanGame.MenuBlend);                   // MenuBlend ist nur zum Ausblenden gedacht    
  38.   for a := 0 to 1 do begin
  39.     case a of
  40.       0 : RingPos := Round(RingPosLeft);
  41.       else RingPos := Round(RingPosRight);
  42.     end;
  43.     glBegin( GL_QUADS );
  44.       glTexCoord2f(0,1); glVertex3f( LPosY + a*rOffset, RingPos, 0);
  45.       glTexCoord2f(1,1); glVertex3f( LPosY + 43 + a*rOffset, RingPos, 0);
  46.       glTexCoord2f(1,0); glVertex3f( LPosY + 43 + a*rOffset, RingPos+55-a*10, 0);
  47.       glTexCoord2f(0,0); glVertex3f( LPosY + a*rOffset, RingPos+55-a*10, 0);
  48.     glEnd;
  49.   end;
  50.   glDisable( GL_BLEND);
  51. end;
  52.  

Ich hoffe ihr wisst Rat, oder habt Tip(p)s für mich.

Danke
Uwe

PS und hier der BildUpload:


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 30, 2006 14:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Als erstes einmal etwas was damit überhaupt nichts zu tun hat. Die Fragen die du hast können doch recht umfangreich sein. Tu dir und uns bitte das nächste Mal einen gefallen und trenne solche Frage wie die Dritte bitte in ein extra Thema ab. Das kann sonst recht schnell unübersichtlich und verwirrend werden. ;-)

Erste Frage:
Dafür gibt es die unterschiedlichsten Lösungen. Es kommt dabei ganz darauf an was du vor hast. Eine Möglichkeit wäre die Selection. Dies dürfte aber in deinem Falle nicht nötig sein. Bei dir sollte es genügen, wenn du dir für jeden Menüpunkt die Koordinaten speicherst und bei einem Mausklick bzw einem Mousemove überprüfst in welchem Bereich du dich befindest. Und dann entsprechen etwas anders zeichnen oder eben den passenden Menüpunkt ausführst. Das wäre so das Einfachste. Bzw bei meinen Komponenten mache ich auch nichts anders als die rechteckigen Bereiche der Objekte zu überprüfen.

Zweite Frage:
Der Orthomodus funktioniert genau so wie 3D (Perspektive) auch. Je nach angegebener Tiefe wird ein Objekt hinter anderen eingeordnet oder eben an verdeckten Stellen nicht mit gezeichnet. Häufig ist es so, dass man im OrthoModus den Tiefentest deaktiviert (glDisable(GL_DEPTH_TEST)) oder auf eine Funktion einstellt die Kleiner Gleich akzeptiert. Also der Tiefentest würde nicht nur Objekte durchlassen deren tiefe kleine ist sondern auch solche bei der die Tiefe gleich ist. GL_LEQUAL anstelle von GL_LESS als Tiefentest verwenden. Aber wenn du nur 2D hast kannst du den Tiefentest auch deaktivieren. Das ist alle mal billiger. Wenn du das getan hast wird genau so gezeichnet wie du zeichnest. Also in genau der Reihenfolge die du verwendest. Mauszeiger also als letztes Zeichnen.

Du kannst den Tiefentest auch nur für eine gewisse Bereiche deaktivieren. Anschließend funktioniert er wie gewohnt, da auch zwischenzeitig alle Tiefeninformationen gesammelt wurden.

Dritte Frage:
Das ist eine sehr interessante Frage. So spontan würde ich auch behaupten, dass den Blending der Ringe auch gar nicht so wirklich funktioniert. Du hast ja angegeben, dass die Ringe geblendet werden sollen aber der Rand von den Ringen ist Hart. Wie erzeugst du dann den Alphakanal der Ringe? Wir der Programmtechnisch erzeugt? Die Pixelreihe weicht nämlich minimal von der Farbe Schwarz (0, 0, 0) ab. Es kann sein, dass du deswegen diese Reihe siehst. Allerdings irritiert mich das Wort "kurzzeitig" ein wenig. Wie zeichnest du denn den Hintergund bzw in welcher Reihenfolge geschiet dies alles. Es hat auf mich ganz den Anschein als ob du die Ringe vor den Stäben zeichnest. Kann mich da aber auch irren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 30, 2006 19:11 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Losy Ex,

Zitat:
Die Fragen die du hast können doch recht umfangreich sein. Tu dir und uns bitte das nächste Mal einen gefallen und trenne solche Frage


Sollte kein Problem sein, war eben halt der "allgemeine Abschluss" meiner Menü-entwicklung in zusammenhang mit den nun auftretenden Fragen. Also, versprochen, ich geb mir in Zukunft Mühe :?

zur ersten Frage schreibst Du, daß Du die Koordinaten der Objecte überprüfst. Bei einer Textausgabe handelt es sich doch nicht um ein Object, oder?. Wie bekomm ich denn die Ausmaß-Koordinaten dieser textausgabe ? Ich hab so im Hinterkopf mal irgendwas von Width und Height gelesen zu haben ( @TextClient.Height ? oder wie das hieß) . Sorry, habs nie wieder gefunden. :cry:

zu zweitens/drittens: Ich hab festgestellt daß ich das was "stayontop" sein soll, also vorne, als erstes gezeichnet werden muss. Hmm, versteh ich jetzt nicht. Logisch wäre das Vordere zu letzt um alles überdecken zu können., so wie Du es beschreibst :cry:
Ich zeichne zuerst den Mauscursor, dann die Ringe, danach die gelben Pfeile, und dann den Menürahmen, danach die Textausgaben fuer das Menü. Würde ich das nicht mache (und ich hatte es so gemacht), wäre zB. der Rahmen vor den Ringen.

Der Alphakanal umfasst die Farbe 0,0,0 und diese Werte gibt auch mein Grafikprogramm an der Oberkante des Bildes an. Trotzdem hab ich diesen schwarzen Strich nach der Bewegung der Ringe. :cry:
Ich könnt's schneller stellen, aber das bringt Unruhe ins Bild und wäre dann nicht beabsichtigt.

Vielen Dank für deine Mühe
Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 30, 2006 21:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Der Orthomodus funktioniert nicht anders als der Perspektivenmodus. Wie Lossy eX bereits beschrieben hat wirkt demnach auch hier der Tiefentest.
Du zeichnest deinen Text ohne Tiefentest (glDisable(GL_DEPTH_TEST)). Somit wird dein Text über alles andere gezeichnet, was du bis dahin gerendert hast. Entwerder du deaktivierst den Tiefentest, wie von Lossy eX beschrieben komplett - Dann ist die Zeichenabfolge entscheidend, oder aber du nutzt den Z-Wert für die Anordnung deiner Primitive.
Im Moment verwendest du einen Mix aus beiden Methoden. Das ist an sich nichts Schlimmes, erklärt aber die von dir beschriebenen Beobachtungen.

@3. Das ist ein Problem, bei dem man als Außenstehender nur raten kann.

Ich würde vermuten, dass sich das Problem auch auf Blending und den Tiefentest zurückführen lässt. Vermutlich zeichnest du den oberen Menürahmen nach deinen Ringen. D.h. Die Ringe werden gezeichnet und im Framebuffer befindet sich nur das Schwarz des Hintergrundes. Das heißt die Fragmente werden an der Stelle ebenfalls schwarz. Anschließend zeichnest du den Menürahmen, dieser besteht aber an der besagten Stelle den Tiefentest nicht...
D.h. du müsstest an deiner Zeichenabfolge werkeln oder die Z-Werte entsprechend anpassen.
Wie gesagt: Das sind blanke Vermutungen. Als Außenstehende fällt es uns schwer hier zu helfen. Vielleicht würden uns mehr Informationen helfen.

Ich kann dir nur empfehlen, dich mit den Einsteigertutorials genauer zu befassen. Danach sollten Verständnisprobleme mit dem Tiefentest und Blending aus dem Weg geräumt sein.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 30, 2006 21:22 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Magellan,

Ich merk schon, da sitzt bei mir noch nicht viel Information fest. Eure bzw. auch Deine Erklärung der möglichen Vermutungen, was nun die Ursache für Nr3 sein könnte, hilft mir aber den Gesamtablauf zu verstehen. Nur reines Lesen der Tuts ist eben doch nicht so das Wahre (für mich), obwohl ich selten bzw. noch nie so gute gelesen habe. :!:

Ich werd mich dann mal beimachen, und anhand Eurer Vorschläge ein bissl rumwerkeln.
Also Tiefentest und Blending mal rumprobieren.
Irgendwann klappt's dann schon.
Momentan kann ich erstmal nix weiter schreiben, außer daß ich da noch was machen muß.

Ich danke Euch beiden ersteinmal für die Gedankenanstöße.
gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 08:52 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wegen der Auswahl der Einträge. Was Lossy meint ist kein Vodoo oder so. Einfach herausfinden welche Bildschirmkoordinaten deine Einträge haben (z.B. Über den Debugger einen Breakpoint im OnClick-Ereignis setzen, und dann die Koordinaten manuell ablesen), und dann Prüfen ob spätere Mausklicks in diesem bereich liegen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 09:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Puh also so meinte ich das jetzt. Also nicht im Debugger irgendwelche Werte auslesen. Das igitt!! :shock:

Es muss ja nicht pixelgenau sein. Aber die Y Position kennst du. CMenuYPos[a] bzw die anfängliche X Position hast du auch. Die ist nämlich 80. Und wenn diese Texturklasse keine Möglichkeit bietet die Breite und Höhe abzufragen dann kannst das in diesem Falle auch per hand ausrechnen, da die Buchstaben immer die gleiche Breite haben. Oder aber du gehst von der maximalmöglichen Breite aus. Was dann 18 oder 20 Zeichen sein müssten. Diese Informationen müsstest du irgendwo ablegen und bei MouseMove dann schauen in welchen bereich du dich befindest.

Oder aber du suchst dir eine andere Texturklasse bzw erweiterst die aktuelle um die entsprechende Möglichkeit.

Was mich zum Nächsten bringt. Die Methode Center setzt Leerzeichen vor den Text damit dieser womöglich zentriert dargestellt wird?? Was in dem Fall des ersten Eintrages wohl nicht so ganz hinhaut, denn da sind Links 2 Zeichen Luft und rechts 3 Zeichen. Finde ich persönlich nicht ganz so schön. Fällt aber wohl in die Kategorie Geschmackssache.

zum Dritten denke ich auch, dass sich dieses Problem wahrscheinlich dann erledigt hat, wenn du den Teifentest angepasst oder deaktiviert hast und du dann die Objekte einfach überzeichnest. Ala GDI.

PS: Etwas ganz anderes und recht unwichtiges. Variablennamen wie a sind immer mit Vorsicht zu genießen. Dann neigt man sehr schnell dazu die Variablen nach dem Alphabet zu benennnen. Aber du benutzt a ja auch nur für den einen Schleifenzähler. Wobei ich in deinem Code jetzt nirgendswo eine stelle finde bei der 3 oder noch mehr Schleifen vorkommen. ;-) Wobei man solche Konstrukte eh vermeiden sollte. :twisted:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Danke an alle Helfer
BeitragVerfasst: Do Aug 31, 2006 11:09 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Lossy Ex & Flash,

Zu allererst: Hab es jetzt alles hinbekommen - Danke -

@Flash
Zitat:
Was Lossy meint ist kein Vodoo oder so.

Hab ich auch nicht gedacht. (die Formulierung gefällt mir aber )


Lösung:
Habe den Tiefentest deaktiviert, und die Zeichenfolge so abgeändert, daß die Maus zum Schluß gezeichnet wird.
Dachte das es keine Rolle spielt, wegen dem Tiefentest, da ja eigentlich keine Tiefe gezeichnet wird, ich weiß, trotzdem ist sie aber da.
Das mit den Mouse-Koordinaten hab ich einfach beim Move der Mouse ins Spiele-Object als Var mitgeführt, und war dann ohne Breakpoints in der Lage, mir die Werte neben der FPS-Ausgabe anzeigen zu lassen. Habs dann einfach dort abgeschrieben und notiert.

@Lossy Ex
Zitat:
Es muss ja nicht pixelgenau sein. Aber die Y Position kennst du. CMenuYPos[a] bzw die anfängliche X Position hast du auch. Die ist nämlich 80. Und wenn diese Texturklasse keine Möglichkeit bietet die Breite und Höhe abzufragen dann kannst das in diesem Falle auch per hand ausrechnen, da die Buchstaben immer die gleiche Breite haben. Oder aber du gehst von der maximalmöglichen Breite aus.

Diesen Lösungsansatz werd ich dann verfolgen und realisieren, da ich ja die Klasse erweitern kann und möchte. vorerst ist die Lösung mit dem Auslesen/notieren ausreichd gewesen, da es mir nur um das Abfangen der Koordinaten ging.
Eigentlich pures Delphi. Da hatte ich wohl beim Überlegen ein mächtiges Brett vor dem Kopf. :?
Zitat:
Variablennamen wie a sind immer mit Vorsicht zu genießen. Dann neigt man sehr schnell dazu die Variablen nach dem Alphabet zu benennnen. Aber du benutzt a ja auch nur für den einen Schleifenzähler

Da hast Du recht, aber ich hab mir das so angewöhnt, da x und y zB in Delphi meist Spalten und Zeilenangaben sind, und a..h(?) eigentlich "rumliegen". Daher hab ich damit noch nie Probleme gehabt. Wenn ich zB. ein 2 dimensionales Array durchlaufe, heißen meine Variablen meistens auch sp(alte) und zei(le). Das ist dann bestimmt genau solche Art von Bezeichnern, wie Du es angesprochen hast.
Zitat:
Die Methode Center setzt Leerzeichen vor den Text damit dieser womöglich zentriert dargestellt wird??

Das dürfte dann ebenfalls Geschichte sein, wenn ich die Textbreite im Prog zur Laufzeit berechnen kann. Dann ist eine pixelgenau Zentrierung ja leicht möglich. Mir fehlte nur eben die Textbreite :lol:

Das was Punkt 3 war, also dieser kleine schwarze Strich, wegbekommen hab ich den nicht, auch nicht mit neuer Grafik, aber ich Blende die Spiralfedern jetzt mit 1.0(aber dunklere Grafik) und da der Menürahmen durchscheint fällts nicht mehr so stark auf.

Vielen Dank Euch allen
Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Danke an alle Helfer
BeitragVerfasst: Do Aug 31, 2006 12:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
uweq hat geschrieben:
Da hast Du recht, aber ich hab mir das so angewöhnt, da x und y zB in Delphi meist Spalten und Zeilenangaben sind, und a..h(?) eigentlich "rumliegen". Daher hab ich damit noch nie Probleme gehabt. Wenn ich zB. ein 2 dimensionales Array durchlaufe, heißen meine Variablen meistens auch sp(alte) und zei(le). Das ist dann bestimmt genau solche Art von Bezeichnern, wie Du es angesprochen hast.


He He. Wollte gerade böswilliger weise vorschlagen, dass Variablennamen auch aus mehrere Zeichen bestehen dürfen. :twisted: Kleiner Scherz. Aber hat sich ja im zweiten Teil des Textes erledig. Ich denke mal das ist mal wieder so ein Thema welches eine reine Glaubensfrage darstellt. Also jeder macht es so wie er es gerne mag.

Ich für meinen Teil benutze ausschließlich englische namen und versuche die Namen so zu wählen, dass ich später noch genau weiß was sie eigentlich bedeuten. Also bei 2 verschachtelten Schleifenzählern wäre das dann in etwa so etwas wie BlubIdx, BlahIdx oder so was. Und je nachdem wie kompliziert die Klassen sind kann es auch schon mal vorkommen, dass Klassennamen in etwa so ein länge annehmen. TKleinesZwergGedackeltesFliegobumMitGrossenOhren. :lol: Aber das ist zum Glück selber ein bisschen eine Seltenheit. Wie gesagt alles Geschmackssache und gibt kein richtig oder falsch. Außer der Kompiler ist da anderer Meinung.

Aber es ist doch schon mal schön, dass es soweit funktioniert. Allerdings das mit der Spirale finde ich seltsam. Die Textur hat als größe eine Potenz von 2, oder? Mit welchem Loader lädst du sie? Bzw würde mich da auch mal der entsprechende Codeabschnitt interessieren und evtl auch mal die Rohtextur als Datei wenns möglich wäre (gezipped). Habe ein besonderes interesse an Texturen. Siehe glBitmap in der Signatur. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 12:29 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zitat:
Habe den Tiefentest deaktiviert, und die Zeichenfolge so abgeändert, daß die Maus zum Schluß gezeichnet wird.
Dachte das es keine Rolle spielt, wegen dem Tiefentest, da ja eigentlich keine Tiefe gezeichnet wird, ich weiß, trotzdem ist sie aber da.


Da muss ich nochmal was richtig stellen: Die Fragment die am Ende als Pixel auf dem Bildschirm landen haben serwohl eine Tiefe. Nur weil wir keine 3D Displays haben, heißt das nicht, dass OpenGL nicht weiterhin 3D Koordinaten speichert. Soll heißen: Egal wie du daten an OpenGl übergibst, eine Konkrete Tiefe gibt es immer. (Selbst bei Befehlen wie glTranslate2f wird die 3. koordinate expliziet gesetzt (auf 0).)

Die Tiefe im Orthomodus hat optisch fast keinerlei auswirkungen. Deshalb eignet sie sich um die 2D Szene in Ebenen (Layer) aufzuteilen. Wenn dein Mauszeiger im aller obersten Layer liegt (der am weitesten vorn ist), dann wird bei aktiven Tiefentest dein Mauszeiger auch sichtbar sein.

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


Zuletzt geändert von Flash am Fr Sep 01, 2006 07:57, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 12:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Jetzt wo du das sagst fällt mir noch was anderes ein. Beim Blenden ist vor allem die Reihenfolge des zu zeichnenden entscheident, da jedes Fragment in der Renderreihenfolge auch in den Framebuffer gezeichnet wird. Soll bedeuten bei Dingen die Transparent sind muss der Hintergrund schon 100%tig fertig sein. Sonst klappt es nicht so wie es sein soll.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Lossy Ex,

Ich weiß nun nicht genau welchen Source du haben möchtest. Da es sowieso kein Geheimnis ist, hab ich den ganzen zusammengepappt und stell ihn Dir mal zur Verfügung.(in dr Hoffnung Du suchst Dir dann schon das richtige raus) :lol:
Der sieht zwar etwas wirr aus und ähnelt auch sehr stark dem des Bomberman-tuts, aber das bringt die momentane Entwicklungsphase so mit sich.

Erwähnenswert ist, er ist in Delphi7 geschrieben, und zu Bedienung noch folgendes:
- Startet mit selektierung der obersten Menüpunktes.
- Spiel beenden funktioniert auch im Menü
- Bedienung desselben mit den Pfeiltasten
- Das Menü ausblenden lassen erfolgt zu testzwecken nur über "Spiel fortsetzen" - danach dann, wenn alles schwarz ist , kannst das Prog mit ESC verlassen.
- Taste ESC kann ebenfalls das Programm immer beenden.

Ich hab Dir den DL der Sourcen & Bilder(*.png und *.tga) etc dann auf meiner HP unter diesem Link hier alles hinterlegt. (ca 1,4 MB als Zip)

Zitat:
Die Textur hat als größe eine Potenz von 2, oder?

Das wohl eher nicht, es sind zwar gerade Zahlenwerte, aber nix wie 2,4,8,16,32,64...

Na schaus Dir mal an.

Gruß Uwe

PS:
@Flash
Der link kommt geil :lol:, steht ja garnix drinn, was nun Fragmente sind, aber ich vergleich das mal einfach mit Layer des Netscape-Navigators bis ich was besseres gelesen hab. Zumindest versteh ich was du meintest.

Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 19:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also die Texturen sollten immer eine Potenz von 2 haben. Auf neueren Grafikkarten ist das zwar nicht zwingend nötig aber sonst wird es auf jeden Fall benötigt. Im Normalfall würdest du dann solche Texturen auch nicht sehen. Falls du dich fragst warum du doch welche siehst. Das liegt an einer Methode die sehr gerne zum Texturupload verwendet wird. Leider ist diese hoffnungslos veraltet, langsam und sie verändert die Texturen in bestimmten Fällen. Nämlich falls diese nicht keine Potenz von 2 haben. Dann berechnet dieses "Ding" selber eine neue Textur und macht sie matschig.

Konnte es so auf die Schnelle nicht finden. Ich habe dank eines FestplattenCrashs noch kein Delphi wieder auf meinem Rechner aber ich schaue mir das morgen im Laufe des Tages mal genau an.

PS: Du solltest dir auch mal überlegen ob du nicht vielleicht auf die DGLOpenGL.pas umsteigst. Die ist ein bisschen aktueller als die OpenGL12.pas. Allerdings müsstest du dadurch reichlich umbauen in den Quellen. bzw in dem Projekt dürften einige Teile auch gar nicht mehr funktionieren. Und die wirklichen Vorteile davon dürften für deinen Fall jetzt eher nur dürfig sein. Aber fürs nächste Projekt solltest du das vielleicht mal ins Auge fassen.

PPS: Interessante Musik im Menü. :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 19:15 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
OpenGl12.pas - das dies nicht die neuste ist, hab ich schon fast vermutet, nur eben halt nix wie OpenGL15 oä.pas gefunden.
Na nun weiss ich welche ich nehmen kann, und die Arbeit des Umschreibens meines Sources werd ich dann einfach mal auf mich nehmen.

zur Musik: Soll halt was nettes sein :lol: eben was für Kiddys, da macht sich Heavy Metal eh nicht :lol:
und so'n kleiner loop passt immer.

Gruß Uwe

PS: die Center-function mit den Leerzeichen ist schon Geschichte: funzt jetzt (fast genau) auf Pixelbreite.
Danke für den Tip

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 31, 2006 20:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
uweq hat geschrieben:
OpenGl12.pas - das dies nicht die neuste ist, hab ich schon fast vermutet, nur eben halt nix wie OpenGL15 oä.pas gefunden.
Na nun weiss ich welche ich nehmen kann, und die Arbeit des Umschreibens meines Sources werd ich dann einfach mal auf mich nehmen.

Die glBMP.pas benutzt die OpenGL12.pas. Da wäre es evtl einfacher den Loader auszutauschen. Ich bin eh kein Fan von der glBMP bzw der Textures.pas. Und Rein zufälig habe ich da schon mal was vorbereitet. ;-) Schleichwerbung. Na ja. Die glBMP und die Textures sind seit jahren tot und werden somit nicht mehr weiter entwickelt. Und sie habe einige kleine Schwächen. Deswegen hatte ich einen eigenen Loader geschrieben.

uweq hat geschrieben:
Soll halt was nettes sein :lol: eben was für Kiddys, da macht sich Heavy Metal eh nicht :lol:
und so'n kleiner loop passt immer.

Ich find die auch witzig. Aber mit 26 und Kiddys? Na ja. Ich hoffe doch nicht. Wobei so etwas ja schließlich keine Frage des Alters sondern der Einstellung ist.

Center: Freut mich/uns dass wir helfen konnten. :)


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


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 13 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.011s | 17 Queries | GZIP : On ]