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

Aktuelle Zeit: Do Jul 17, 2025 15:29

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: Mi Nov 10, 2004 14:21 
Offline
DGL Member

Registriert: Sa Nov 06, 2004 15:58
Beiträge: 15
Flash hat geschrieben:
2^n bedeutet "2 hoch n"

1024 sind 2^10

Erst in den neuen Spezifikationen werden auch Texturen unterstützt die andere Formate haben. Das is halt so. :wink:


Ok danke für die Erklärung,
allerdings bleiben die Ränder immer noch so oder muß ich jetzt noch was an meiner Tilegröße ändern???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 14:23 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
So wie SoS ähh Sascha gesagt hat. Du must die Tiles neu in der Textur anordnen. Leider dann auch die TexCoords neu berechnen. (das is halt auch so :wink: )

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 14:29 
Offline
DGL Member

Registriert: Sa Nov 06, 2004 15:58
Beiträge: 15
Flash hat geschrieben:
So wie SoS ähh Sascha gesagt hat. Du must die Tiles neu in der Textur anordnen. Leider dann auch die TexCoords neu berechnen. (das is halt auch so :wink: )


Sorry ich steh grad total auf dem Schlauch, ich habs nun so gemacht
das Pic ist 1024x1024
ein Tile ist 64x64
5 Tile liegen nebeneinander in der Reihe
und insgesamt hab ich 10 reihen

was muß da nun geändert werden???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 14:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Könntest du mal Code bzw ein Bild posten, kann mir nach den ganzen Lösungen hier das Problem nicht so richtig vorstellen..

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 14:40 
Offline
DGL Member

Registriert: Sa Nov 06, 2004 15:58
Beiträge: 15
Hier mal ein Screenshot

Bild

Hier mein Code wie ich die koordinaten berechne

Code:
  1.  
  2.         int m_nFrameWidth=64;
  3.     int m_nFrameHeight=64;
  4.  
  5.     int m_nTextureWidth=1024;
  6.     int m_nTextureHeight=1024;
  7.  
  8.     int m_nNumFrameColumns=5;
  9.     int m_nNumFrameRows=10;
  10.  
  11.     int m_nCurrentColumn=RAND_RANGE(0,4);    //   -> x  Zufallszahl zwischen 0 und 4
  12.     int m_nCurrentRow=rownumber;            //    ->y
  13.  
  14.     int m_nOffsetX=0;
  15.     int m_nOffsetY=0;
  16.  
  17.     // If the frames of animation don't fill up the whole texture, you'll need
  18.     // to find the sub-range within the standard texture range (0.0 to 1.0)
  19.     // that the frames do exist within.
  20.     float fSubRange_s = (1.0f / m_nTextureWidth ) *(m_nFrameWidth  * m_nNumFrameColumns);
  21.  
  22.     float fSubRange_t = (1.0f / m_nTextureHeight) *(m_nFrameHeight * m_nNumFrameRows);
  23.  
  24.     // No convert the Width and Height of a frame into texture values...
  25.     float fFrame_s = fSubRange_s / m_nNumFrameColumns;
  26.     float fFrame_t = fSubRange_t / m_nNumFrameRows;
  27.  
  28.     // Now, calculate the new s/t texture values for the four corners
  29.     // of the quad based on the current column and row of the animation
  30.     float fLowerLeft_s  = m_nCurrentColumn * fFrame_s;
  31.     float fLowerLeft_t  = 1.0f - (m_nCurrentRow * fFrame_t) - fFrame_t;
  32.  
  33.     float fLowerRight_s = (m_nCurrentColumn * fFrame_s) + fFrame_s;
  34.     float fLowerRight_t = 1.0f - (m_nCurrentRow * fFrame_t) - fFrame_t;
  35.  
  36.     float fUpperRight_s = (m_nCurrentColumn * fFrame_s) + fFrame_s;
  37.     float fUpperRight_t = 1.0f - (m_nCurrentRow * fFrame_t);
  38.  
  39.     float fUpperLeft_s  = m_nCurrentColumn * fFrame_s;
  40.     float fUpperLeft_t  = 1.0f - (m_nCurrentRow * fFrame_t);


Ok ist kein Delphi :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 15:26 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du sollst um deine Tiles in der Textur nen freien Rand lassen. Diesen Zeichnest du per Blending dann Transparent. Im Programm selber heist dass, due musst die Quads leicht überlappen lassen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 15:53 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Man kann es anscheinend auch umständlich machen. :D
Ich hatte mal so ein ähnliches Problem gehabt und es dann gelöst, indem ich einfach bei den Textureigenschaften statt REPEAT CLAMP benutzt habe. Also ungefähr so:
Code:
  1. glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_S_WRAP, GL_CLAMP);
  2. glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_T_WRAP, GL_CLAMP);

Bisher hattest du ja noch die Ränder der Tiles daneben mit dabei, was du ja nicht wolltest.
Also in etwa so wie Attachment 1 (stark übertrieben).

Attachment 2 zeigt (auch sehr übertrieben), wie sich dagegen GL_CLAMP darauf auswirkt.

GL_CLAMP aber wiederholt deine Textur nicht, wie GL_REPEAT es tut und damit wird auch nur das Tile, was du haben willst dargestellt. Ist hier jetzt vielleicht etwas unglücklich erklärt... :wink: Schau dir dazu am besten Textur-Tutorial 2 und das Redbook Kapitel 9 an.


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


Zuletzt geändert von Frase am Mi Nov 10, 2004 16:30, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 15:54 
Offline
DGL Member

Registriert: Sa Nov 06, 2004 15:58
Beiträge: 15
Ich kann die Quads nich überlappen lassen, weil später noch 2 texturen darüber geblendet werden sollen.

Warum ist das so umständlich das ganze ???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 16:35 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
wolf_10 hat geschrieben:
Ich kann die Quads nich überlappen lassen, weil später noch 2 texturen darüber geblendet werden sollen.

Warum ist das so umständlich das ganze ???

Das wäre mir echt neu, dass GL_CLAMP Texturen überlappt. Ich glaub, du hast mich da falsch verstanden. Oder ich dich. *g*
Aber soweit ich das auf deinem Bild erkennen kann, müsste
Code:
  1. glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_S_WRAP, GL_REPEAT);
  2. glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_T_WRAP, GL_REPEAT);

all deine Probleme lösen. (Haha. Schön wärs... ;-) Jedenfalls deine Texturprobleme.

EDIT: Oh. Ich seh grad, dass im Texturentutorial Nummero 2 von Delphic doch kein GL_CLAMP behandelt wird. Aber an den Filtermethoden, die dort erklärt werden, lässt sich vielleicht erahnen, was ich meine.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 16:42 
Offline
DGL Member

Registriert: Sa Nov 06, 2004 15:58
Beiträge: 15
Ne auch nicht GL_REPEAT ist es auch nicht besser.
also ich hab mal die Mipmaps weggelassen, die Ränder an der rechten Seite könnte ich umgehen in dem ich einfach noch einen 1 Pixel Rand dranhänge, dann habe ich aber immer noch den Rand unten.

Warum ist das so umständlich ??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 18:06 
Offline
DGL Member

Registriert: Fr Dez 19, 2003 14:27
Beiträge: 107
Wohnort: Indianapolis, USA
Das ist nicht umstaendlich, du musst nur verstehen was du tust.
Entweder du schaltest die Filterung aus dann ist es pixelig dafuer gibts keinen Rand, oder du verwendest die Filterung und bruecksichtigst sie eben.

Du musst die Tiles nicht ueberlappen, die Vertices der Tiles berechnest du wie bisher nur die Textur Koordinaten musst du anpassen. Ich wuerde die Tiles 62*62 pixel gross zeichnen damit sie mit einem zusaetlichen Rand 64*64 gross werden und somit schoener in eine 2^n Textur passen. Die Textur koordinaten gehen dann von 1,1-62,62 anstatt 0,0-63,63, that's it.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 19:46 
Offline
DGL Member

Registriert: Sa Nov 06, 2004 15:58
Beiträge: 15
Tokter hat geschrieben:
Das ist nicht umstaendlich, du musst nur verstehen was du tust.
Entweder du schaltest die Filterung aus dann ist es pixelig dafuer gibts keinen Rand, oder du verwendest die Filterung und bruecksichtigst sie eben.

Du musst die Tiles nicht ueberlappen, die Vertices der Tiles berechnest du wie bisher nur die Textur Koordinaten musst du anpassen. Ich wuerde die Tiles 62*62 pixel gross zeichnen damit sie mit einem zusaetlichen Rand 64*64 gross werden und somit schoener in eine 2^n Textur passen. Die Textur koordinaten gehen dann von 1,1-62,62 anstatt 0,0-63,63, that's it.


Ok danke mal für die Tips ich werds mal ausprobieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 10, 2004 21:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Ja, kann man da net einfach bei den Coordinaten der Textur -0.001 und +0.001 schreiben?
So mach ichs immer ;) Klappt doch ^^
Oder ich habs net richtig gecheckt eben.

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Nov 11, 2004 14:22 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
wolf_10 hat geschrieben:
Ne auch nicht GL_REPEAT ist es auch nicht besser.
also ich hab mal die Mipmaps weggelassen, die Ränder an der rechten Seite könnte ich umgehen in dem ich einfach noch einen 1 Pixel Rand dranhänge, dann habe ich aber immer noch den Rand unten.

Warum ist das so umständlich ??

Was meinst du mit "Ne auch nicht GL_REPEAT ist es auch nicht besser"???
Mit welchem Texturen-Loader bringst du deine Texturen in den Speicher?
glBitmap hat bei mir beispielsweise als Standard-Warp GL_CLAMP verwendet.
Das musste ich dann bei den meisten Texturen noch "per Hand" umstellen.


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 4 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.010s | 14 Queries | GZIP : On ]