Hallo!
Ich bekomme 10 Bit Graustufen Pixelwerte über USB in einem ByteArray geliefert welches dann in etwa so aussieht:
imgData[0] enthält die ersten 8 Bit vom ersten Pixel.
imgData[1] enthält die letzten 2 Bit vom ersten Pixel und die ersten 6 Bit vom zweiten Pixel.
imgData[2] enthält die restlichen 4 Bit vom zweiten Pixel und die ersten 4 Bit vom dritten Pixel, etc...
In einer früheren Version habe ich bereits 8 Bit Daten bekommen. Ein Pixel entsprach also jeweils einem Indize in dem ByteArray und ich konnte das einfach über einen ByteBuffer mit dem ich die imgData gewrappt habe und TexImage2D darstellen:
Wie sieht das jetzt aber mit den 10 Bit Daten aus.
Kann ich die überhaupt so direkt in OpenGL bzw. jogl rein stecken?
Ich habe da etwas von glPixelStore und Pixel Packing bzw. Unpacking gelesen aber irgendwie werde ich da nicht so ganz schlau draus. Entsprechende Beispiele kann ich auch nicht finden aber vielleicht hat ja hier schon einmal jemand damit Erfahrungen gesammelt.
Alternativ kann ich meine Pixel auch zum Beispiel in ein BitSet schreiben und von dort aus in ein IntegerArray damit jedes Indize wieder einem pixel entspricht.
Dann weis ich aber wiederum nicht wie ich bei OpenGL die Graustufen skaliere also der Wert 0 im Array schwarz entspricht und 1023 weiß da ja im IntegerArray 32 Bit zur Verfügung stehen und nicht nur 10...
Außerdem wird das evtl. langsam wenn ich relativ schnell Bilder aufnehmen will und vor jedem Bild in ein BitSet und von dort aus in ein IntegerArray geschrieben wird.
Danke schon einmal im vorraus
Ich bekomme 10 Bit Graustufen Pixelwerte über USB in einem ByteArray geliefert welches dann in etwa so aussieht:
imgData[0] enthält die ersten 8 Bit vom ersten Pixel.
imgData[1] enthält die letzten 2 Bit vom ersten Pixel und die ersten 6 Bit vom zweiten Pixel.
imgData[2] enthält die restlichen 4 Bit vom zweiten Pixel und die ersten 4 Bit vom dritten Pixel, etc...
In einer früheren Version habe ich bereits 8 Bit Daten bekommen. Ein Pixel entsprach also jeweils einem Indize in dem ByteArray und ich konnte das einfach über einen ByteBuffer mit dem ich die imgData gewrappt habe und TexImage2D darstellen:
Code:
gl.glTexImage2D(GL2.GL_TEXTURE_2D, 0, 1, 1280, 1024, 0,
GL2.GL_LUMINANCE, GL2.GL_UNSIGNED_BYTE, buffer);
Wie sieht das jetzt aber mit den 10 Bit Daten aus.
Kann ich die überhaupt so direkt in OpenGL bzw. jogl rein stecken?
Ich habe da etwas von glPixelStore und Pixel Packing bzw. Unpacking gelesen aber irgendwie werde ich da nicht so ganz schlau draus. Entsprechende Beispiele kann ich auch nicht finden aber vielleicht hat ja hier schon einmal jemand damit Erfahrungen gesammelt.
Alternativ kann ich meine Pixel auch zum Beispiel in ein BitSet schreiben und von dort aus in ein IntegerArray damit jedes Indize wieder einem pixel entspricht.
Dann weis ich aber wiederum nicht wie ich bei OpenGL die Graustufen skaliere also der Wert 0 im Array schwarz entspricht und 1023 weiß da ja im IntegerArray 32 Bit zur Verfügung stehen und nicht nur 10...
Außerdem wird das evtl. langsam wenn ich relativ schnell Bilder aufnehmen will und vor jedem Bild in ein BitSet und von dort aus in ein IntegerArray geschrieben wird.
Danke schon einmal im vorraus