# OpenGL Textur mit verschiedenen bit depths



## Runtime (23. Jan 2012)

Hallo Leute,

ich hab wieder einmal nach langer Zeit eine Frage zu OpenGL.  Ich habe Bilder als Rohdaten vorliegen
und möchte sie in den GPU-Speicher laden, was ich bisher mit glTexImage2D versuchte, aber offenbar
funktioniert das nur mit zb bei Graustufenbildern 8 und 16 bits pro pixel. Ist es direkt mit OpenGL
möglich, Bilder mit einer bit depth von 1, 2, 4, 8, 16 und einem Format von Graustufen, Graustufen mit
Alpha, RGB und RGBA in den Speicher zu laden, oder muss ich die selbst umrechnen?

LG und danke!


----------



## HimBromBeere (24. Jan 2012)

Woher soll dein liebes GL denn wissen, wie deine Rohdaten aussehen (welche Farbtiefe)? Von alleine wird es die Information, wann ein Grauwert aufhört und der nächste anfängt kaum herausbekommen (die Information musst du ihm also schon geben). 
Ob es in OpenGL eine Methode gibt, die Rohdaten beliebiger Farbtiefe lesen kann, wag ich fast zu bezweifeln. Ich nehme lan an, du wirst nicht umhin kommen, die Bilder Byte für Byte zu lesen und den Bytes eine tiefere Bedeutung zuzumessen.


----------



## Runtime (24. Jan 2012)

HimBromBeere hat gesagt.:


> Woher soll dein liebes GL denn wissen, wie deine Rohdaten aussehen (welche Farbtiefe)?


Intern kann man die Bilder in diesen Formaten schon und bisher dachte ich, es ginge ganz einfach mit glTexImage,
allerdings kann das nicht einfach die Daten übernehmen. Die Bit depth und der Typ wird mit dem internen Format
angegeben.


----------



## Marco13 (24. Jan 2012)

So ganz ist mir auch nicht klar, was du meinst. Man kann die Formate angeben, die bei glTexImage2D ? DGL Wiki augelistet sind, und ... das sind eben die, die es gibt... 2-bit-Farben gibt es nicht, d.h. sowas müßte man umrechnen...


----------



## Runtime (24. Jan 2012)

Ok, dann noch eine mit dem Verständnis der Funktion glTexImage2D zusammenhängende Frage: Speichert die Grafikkarte die Bilder immer mit der gleichen Bittiefe ab oder merkt sie sich die Bittiefe dazu? Wenn ja, was wäre dann die geläufige Bittiefe?


----------



## Guest2 (24. Jan 2012)

Moin,



			
				http://www.opengl.org/wiki/Common_Mistakes#Texture_upload_and_pixel_reads hat gesagt.:
			
		

> And if you are interested, most GPUs like chunks of 4 bytes. In other words, RGBA or BGRA is prefered. RGB and BGR is considered bizarre since most GPUs, most CPUs and any other kind of chip don't handle 24 bits. This means, the driver converts your RGB or BGR to what the GPU prefers, which typically is BGRA. [..]
> 
> 
> glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, pixels);
> ...


Viele Grüße,
Fancy


----------



## Runtime (24. Jan 2012)

Danke!


----------

