OpenGL Textur mit verschiedenen bit depths

Runtime

Top Contributor
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! 😉
 
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.
 
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?
 
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);

as you can see, you must type GL_RGBA8 for the internal format. GL_BGRA and GL_UNSIGNED_BYTE is for the data in pixels array. The driver will probably send this directly to the video card. Benchmarking shows that on Windows and with nVidia and ATI/AMD, that this is the optimal format.
Viele Grüße,
Fancy
 

Zurück
Oben