.
|
|
| Autor | Beitrag |
|---|---|
|
000 30.09.2002, 21:25 the_viking |
Also, ich wollt von euch mal wissen, wie ihr eure Texturen in OpenGL managed. Habt ihr bessere Methoden? --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
001 05.10.2002, 12:15 Prefect |
Nicht wirklich. Allerdings bevorzuge ich es, wenn man Texturen zu jeder beliebigen Zeit laden oder entladen kann. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
002 05.10.2002, 20:53 the_viking |
Also das die Engine zwischendurch immer wieder mal LoadTexture(dateiname) oder UnloadTexture(Texturid) aufrufen kann ?! Ich hab mal dran gedacht, das Texturen, die seit 500 Frames oder so nicht mehr benutzt worden sind, einfach zu ent-laden, und wenn sie benutzt werden, werden sie wieder geladen. Noch besser: Wird die Tex nicht benutzt, wird eine (vorberechnete) sehr viel kleinere Version der Textur anstelle der Großen geladen. So könnten keine "schwarzen Löcher" durch den Ladevorgang der "großen" Textur entstehen! --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
003 05.10.2002, 21:21 Prefect |
Ja, man kann dann zwischendurch [Un]LoadTexture aufrufen. Um genau zu sein ruft man Texture::Load() auf, eine statische Funktion, die die Liste der geladenen Texturen überprüft und die Textur lädt bzw. die Reference Count erhöht. Freigegeben werden Texturen dann mit pTexture->Release(). Die Idee mit dem Umbauen der Texturen halte ich nicht für besonders gut, da sich schlecht vorhersagen läßt, wann eine Textur gebraucht wird. Wenn du allerdings eine gigantische Welt hast, die in Zonen aufgeteilt ist, könntest du z.B. immer nur die Zone, in der der Spieler ist und die Nachbarzonen im Speicher halten und dementsprechend auch die Texturen organisieren. Wirklich interessant ist eine Hardware/Treiber-basierte Lösung wie sie AFAIK vom neuen P10-Chip von 3dLabs verwendet wird, wobei der Grafikkartenspeicher als Cache betrachtet wird: alle Texturen liegen im RAM, und bei Bedarf werden Texturen in den Onboard-Speicher geladen. Mit dieser Lösung kann man auch bei geringerem Onboard-Speicher effizient arbeiten. Einziger Nachteil ist eben, daß die Texturen, die gerade im Cache sind, auch im Hauptspeicher liegen, d.h. es wird Speicher verschwendet. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
004 05.10.2002, 23:02 the_viking |
Aber (die meisten) haben mehr RAM aufm Board als auf der Grafikkarten (ausg. GF4 mit 128MB, aber wenn die Zahlen weiter so wachsen, braucht man sich nachher gar keine Gedanken mehr ums TexManagement machen) Benutzt du eigendlich sowas wie WAD-Files? (Ich hab so was ähnliches) --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
005 05.10.2002, 23:23 Diablo_bth |
wad-files ist ja wohl das blödeste was man benutzen kann! 1. Wad-Files sind 256 Farben mit RGB-Palette begrentzt. |
|
Profil || Suche |
|
006 06.10.2002, 00:24 Prefect |
Ich werde in Zukunft nur noch gängige Dateiformate verwenden (auch für Maps), da hat man am wenigsten Streß mit dem Editing. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
007 08.10.2002, 00:12 the_viking |
@Diabolo_bth: Meine "wad" files heißen "tpk" = "Texture Package" Aber sie kompressieren auch nichts.. Kenn keinen Kompressing Algo... :( --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
008 08.10.2002, 09:18 Kriz |
32 Bit = 4 Byte 3 Bytes Farben (RGB) Wofür dann das 5. Byte? Zum Komprimieren (net "Kompressieren") würde ich einfach einen LWZ-Algorithmus nehmen und ihn dementsprechend anpassen (zlib googeln oder mal bei www.gnu.org suchen). --K:R-I)Z++ |
|
Profil || Suche |
|
009 08.10.2002, 12:24 the_viking |
32 Bit hmm.. stimmt... Wiso gibts dann 32Bit BMPs mit nur 3Farben? Ah: Remember: 0x00RRGGBB ? ! thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
010 08.10.2002, 14:19 Prefect |
Hmm.. 40Bit = 10Bit pro Kanal? ;) Die 32-Bit BMPs lassen halt einfach ein Byte ungenutzt. Man verwendet trotzdem lieber 32-Bit statt 24-Bit (auch für reines RGB ohne A), weil man dann mit aligned words hantiert, und dabei ist der Speicherzugriff schneller als bei unaligned data. cu, Widelands - Gemütliche Aufbaustrategie, Free Software Dieser Beitrag wurde am 08.10.2002 um 14:20 von Prefect bearbeitet. |
|
Profil || Suche |
|
011 08.10.2002, 16:09 the_viking |
Hrm Hrm Prefect... Das hab ich da oben erkannt! 0x00000000 B1 = Ungenutzt (Alpha?) 0x??RRGGBB --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
012 09.10.2002, 13:25 Prefect |
Ja klar. Ich wollte nur noch anmerken, _warum_ man 32 Bit verwendet (wo 24 Bit doch eigentlich platzsparender wäre). cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
013 09.10.2002, 18:26 HostileKiller |
warum nimmst du net 16 bit das ist doch viel platzsparender, oda? -- |
|
Profil || Suche |
|
014 09.10.2002, 19:58 Diablo_bth |
16 bit is scheiße, da man für jeden der 3 Farbkanäle 5 Bits verwendet -> da hängt man lieber nich ein byte an jedes Pixel und hat nicht mehr das Heckmeck beim laden und man hat keinen Alpha-Channel. für die Graka und das Ram is 32-Bit pro Pixel sowiso am besten - da man ja schließlich mit einem 32-Bit System umgeben ist (noch :P) für Alpha-Texturen finde ich komprimierte TGA's immer noch am besten - klar RLE nich so gut wie über eine discrete cosinus-Transformation [jpeg] - aber dafür verlustfrei. (png geht auch noch, is aber schwerer zum Laden, wenn man keine lib benutzt) -- |
|
Profil || Suche |
|
015 09.10.2002, 20:51 Tron |
NIEMALS verlustbehaftete formate fuer texturen benutzen, das sieht zum reihern aus. 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
016 09.10.2002, 23:27 the_viking |
*blickaufdiablo* : Benutzt du nicht *.jpg Texes in deiner Engine?? Kennt jemand nen guten Loader der *alle* Bildformate laden kann (Ich hab jetzt echt keine Lust, nen Loader für komprimierte Targas oder Pngs zu machen, von der Materie (De/Komprimieren) verteh' ich eh nichs), und das leicht zu implementieren ist ( #include "pictureloader.h", und man kann alle funktionen benutzen) ? (ich hatte ma einen, aber mit dem bin ich nicht klargekommen! Am besten: [code] thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
017 09.10.2002, 23:31 TheTinySteini |
@Diablo_bth: Außer man geht wieder zum Hardcore-Programming über und macht das ganze Shading usw. auf Softwarelevel, jeweils 2 Pixel (also 32 bit) gleichzeitig. --TheTinySteini |
|
Profil || Suche |
|
018 10.10.2002, 13:49 Prefect |
TTT: Selbst da wäre 32 Bit besser, denn dann kannst du MMX-Routinen verwenden. 8-8-8-8 kann MMX handeln, 5-5-5/5-6-5 nicht. Tron: Interessanterweise verwenden die meisten (alle?) Quake 3-Engine-Spiele JPEG für normale Texturen, und TGA für Texturen mit Alphakanal. Für verlustfreies Packen ist wohl PNG am besten, vor allem da es auch einen Alphakanal unterstützt. Zum Laden von Bildern: Nun, es gibt natürlich für die komplexeren Bildformate eigene Libraries (libjpeg, libpng), und es gibt Libraries wie SDL_image, die gleich eine ganze Reihe von Bildformaten unterstützen. cu, Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
019 10.10.2002, 15:45 Kriz |
PNG ist gut, da der Alphakanal sogar fadebar ist (in der letzten Revision von PNG). Das es aber immernoch ziemlich hakt am Support sieht man am Besten bei den ganzen Browsern, die stricken sich ihr PNG so zusammen wie sie's grade brauchen. Aber als Texturbasis wäre das mal cool. Aber vorsicht! Bei vielen Farben pro Textur (ungünstigster Fall wäre z.B. ein Farbverlauf oder gar mehrere) wird ein PNG nicht mehr sonderlich großartig komprimiert. Große Erfolge sind eher bei unifarbenen oder wenig-colorierten Texturen zu verzeichnen. --K:R-I)Z++ |
|
Profil || Suche |
|
020 10.10.2002, 17:18 the_viking |
Hauptsache, es ist kleiner als BMP ;) @diabolo_bth: Shader usw.. in die Textur mit reinpacken? Wat hat das fürn nutzen? @Prefect: Genau diese SDL Lib hatte ich, bin damit aber überhaupt nicht klar gekommen (Ich glaub, das brauch auch das ganze SDL-Grundsystem :( SDL_WindowInit() usw...) --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|
021 10.10.2002, 22:41 Diablo_bth |
@viking: wie meinst Shader in eine Textur reinpacken? Als Shader würde ich die Rendering-Eigenshaft einer Oberfläche bezeichnen - die umfass durchaus Texture-mapping - hat aber mit Bildformaten reichlich wenig zu tun. ich benutze jpegs in meiner engine schlicht des Platzes wegen - der Unterschied zu verlusfreien Formaten ist minimal und eigentlich nicht relevant - da die Gaka bei minification/magnification alles sowiso nochmal überfiltert (vom bilinearen oder trilinearen filtering ganz zu schweigen) -- |
|
Profil || Suche |
|
022 11.10.2002, 18:34 dp Administrator |
Dazu ist png auch nicht lizenzverseucht .. @Kriz: PNG wird von Opera vollständig unterstützt. (Also mit Alpha) --Dieser Beitrag wurde am 11.10.2002 um 18:37 von Darth Paul bearbeitet. |
|
Profil || Suche |
|
023 11.10.2002, 19:17 chriss |
abgesehen vom ie läuft png eigentlich in allen browsern problemfrei -- |
|
Profil || Suche |
|
024 13.10.2002, 22:36 the_viking |
IE mal wieder... *g*Weiß nicht, was alle gegen MS haben. Läuft bei mir (fast immer ) alles wunderbar! ( Ich hab noch NIE, NIE PNGs auf Internetseiten gesehn) --thx, cu, MfG the_viking (( My =]=H=O=M=E=> Page! )) |
|
Profil || Suche |
|

