gibt es eine möglichkeit die daten die man glTexImage2D als pointer übergibt channel-weise zu übergeben?
Also z.B. bei einem 320x240 bild habe ich einen buffer der größe 320 * 240 * 3, allerdings sind da die ersten 320*240 byte der Rot-wert, dann die nächsten 320*240 grün und die letzten blau.. also nicht immer ein byte R, dann eins G, eins B, wieder eins R etc..
Klar könnte ich das selbst mir umbasteln, aber für meien zweck wäre es mehr als ideal wenn es da irgendeine extension oder so gäbe.., gibt es die? ^^
Und wenn ja, hat die besondere geschwindigkeits nachteile oder so?? (Dürften ja nur minimal sein wenn, denn die daten werden so oder so ja in den vram kopiert..)
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also eine Erweiterung die so etwas direkt macht wäre mir neu. Du könntest so etwas aber vielleicht mit einem TextureArray (gf8 Extension) lösen. Dabei würdest du so tun als hättest du 4 Texturen mit jeweils einem Kanal. Das müsstest du dann aber mit Shader wieder zusammenbauen. Bzw mit Shadern könntest du auch eine normale Textur machen und dann mit 4 Texturzugriffen dann 4 Werte holen und die mit Shadern passend zusammenpacken.
Allerdings hast du dann überall 4 anstelle von einem Texturzugriff. Und ob das so optimal und sauber gelöst ist lasse ich mal dahingestellt. Zu mal die Anforderungen an eine ordinäre Textur so deutlich erhöht werden.
Mich wundert allerdings gerade wo du solch ein komisches Format herbekommst?
Mich wundert allerdings gerade wo du solch ein komisches Format herbekommst?
Herbekommen im grunde nirgendwo, darum geht es mir auch nicht
Ich hab das "problem", dass meine Bitmap-Klasse von der auch die Texture-Klasse gebrauch macht multi-channel fähig sein soll..
Also ich möchte gern einfach zur laufzeit auf knopfdruck noch einen farb-kanal hinzufügen, beliebig viele..
Ich mach das dann jetzt wohl so das ich RGB(A) wie gewohnt speichere und zusätzliche kanäle eben extra.. wär nur schön gewesen ein einheitliches schema dafür zu haben :/
Aya~
PS: Herbekommen tut man solche daten aber btw auch z.B. beim OpenEXR Dateiformat, das ist auch multi-channel fähig
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das Interesse an dem woher war erst gemeint. Auch wenn sich das vielleicht nicht ganz danach angehört hat. Denn bisher kenne ich es nur so, dass die Bilddaten eben pixelorientiert sind. Heißt ja aber nicht, dass es anders keinen Sinn machen würde.
Aber ich denke die Speicherung von RGB(A) + seperate Kanäle ist da wohl schon das Sinnvollste. Wobei du aber wahrscheinlich so oder so auf mehr als eine Textur umsteigen musst. Denn eine OpenGL Textur kann nur 1-4 Kanäle besitzen. Mit Texture_arrays könntest du "mehrere" gleiche Texturen an eine TMU binden (leider 1 kompletter Speicherbereiche mit texturen hintereinander). Damit könntest du theoretisch dieses Kanäleprinzip erreichen. Müsstest dann aber für jeden Kanal ein mal die TMU um ein Pixel bemühen. Außer du machst "RGBA" Kanäle und interpretiert die Werte nach deinen Vorstellungen. Dann hast du nur noch 1/4tel Zugriffe. TextureArrays sind leider sehr neu. Sonst Multitexturing. Das belastet aber die Anzahl der TMUs.
Denn ich könnte mir schon vorstellen, dass es eventuell etwas umständlich ist die Kanäle immer zusammen bauen zu müssen. Da wäre eine Programmtechnische Haltung in Kanäle wohl mitunter deutlich sinnvoller. In der glBitmap dauert das Hinzufügen eines einzelnen Alphakanals leider auch schon gehörig Zeit. Von daher kann ich nur davon abraten das zu oft zu machen und du solltest den Code dann auf diesen Fall spezialisieren. Wenn das dann noch halbwegs gut durchdacht ist, dann gehts auch schnell.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hmm... Wie wäre es mit einer 3D-Textur? X und Y sind die normalen Pixel und die Z-Achse sind die Kanäle? Wenn man die Koordinaten richtig trifft bekommt man auch kein Problem mit eventuellem Filtering (oder man schaltet es einfach aus).
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Texture Arrays etc hatte ich auch schon drüber nachgedacht, finde ich aber alles sehr suboptimal (+ zu hohe anforderungen)
Das mit der 3D Textur klingt eigentlich sogar als könne es funktionieren, aber wirklich schnell sind 3D Texturen jetzt auch nicht, oder? Zumal ich eigentlich immer nur 3 kanäle (+ evtl Alpha) anzeigen möchte.. also nie alle aufeinmal.
Im moment sieht mein plan dafür so aus, dass ich halt RGBA ganz normal speichere und die zusätzlichen kanäle dann separat und für den fall das ich diese mal anzeigen möchte dann halt per multitexturing.. zwar nicht das optimalste, aber bei mir geht es weniger um geschwindigkeit diesmal.
Mit den einzelnen channels wäre es nur um einiges komfortabler und einheitlicher gewesen.. :/
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Du könntest ja die Textur mit 4 layer anlegen und dann immer nur den Inhalt der Layer austauschen. Je nach dem, was gerade gebraucht wird. Eventuell auch nur drei Layer, die aber jeweils noch einen Alphakanal haben, der Performance zu liebe (wobei das natürlich den Speicherverbrauch erhöht).
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.