沒有浮點在Java中,我們可以直接分配字節緩衝區一樣爲什麼我們直接分配字節的ByteBuffer,但用openGL(ES)在FloatBuffer
ByteBuffer bf ;
bf.allocateDirect();
但是,我們不能這樣做,在FloatBuffer的情況下,沒有這是爲什麼呢?
我不知道是否是因爲:
字節是在硬件層面訪問(如OpenGL的工作只是上面不像delvik硬件)和寄存器硬件(GPU硬件)的單位是字節,甚至浮點數字應該存儲在4字節的寄存器中,因爲這些寄存器可能不可用,所以我們不能直接分配,相反我們應該告訴緩衝區爲給定大小的塊分配內存,然後將數據放入這些塊中,並再次將其作爲FloatBuffer處理。
OpenGL將自己的類型用於浮點數,整數等,這些類型具有明確定義的大小。這些類型的大小沒有平臺依賴性。每個平臺上的「GLfloat」保證爲32位。 – 2014-12-02 15:59:28
是的,glfloat保證是32位的,但是當你在opengl es中發送頂點時,它們不是GLfloats,而是漂浮的,這意味着依賴於平臺,你必須使用nio緩衝區。糾正我,如果我錯了,我沒有經歷過你。 – KostasRim 2014-12-02 20:35:45