我通過USB獲取10位像素(灰度)並將它們存儲在一個字節數組中。 因此,例如,第一個字節(imgData [0])包含第一個像素的前8位。第二個字節(imgData [1])包含第一個像素的最後2位和第二個像素的前6位等...JAVA/Jogl/OpenGL顯示10位imageData存儲在字節數組中
要獲得一個數組,其中每個索引代表1個像素,從的ByteArray成位集合和從所述位集合到一個整數陣列
位我只之前通過創建的ByteBuffer顯示的8位圖像作爲紋理:
private static ByteBuffer buffer;
包裹它
buffer = ByteBuffer.wrap(imgData);
和使用
gl.glTexImage2D(GL2.GL_TEXTURE_2D, 0, 1, 1280, 1024, 0,
GL2.GL_LUMINANCE, GL2.GL_UNSIGNED_BYTE, buffer);
如果我需要使用10個數據,現在我可能需要使用IntBuffer和可以使用32位。但我只需要10位。我如何縮放/告訴OpenGl 1023的值意味着白色,值0意味着黑色?
或者:
有一種方法我可以輸入ImgData直爲ByteArray和OpenGL執行一些魔術和創建1個像素的是,被存儲在各ByteArray中10位的? 我看了一些關於glPixelStore,像素打包/解包等內容,但我無法弄清楚這是否真的能夠做我需要的東西以及如何使用它。
我不知道openGL的能力,但我認爲它不能處理任何> 8位每通道。您可能需要刪除這兩個額外的位。 – zapl