2015-12-13 62 views
0

在C++中,我可以定義一個頂點如有沒有辦法在Android的OpenGL ES 2.0中使用Java中的頂點緩衝區中的對象?

class Vertex 
    { 
    public: 
     Vertex(); 
     ~Vertex(); 
     //Position 
     float x, y, z, w; 
     //Normals 
     float nx, ny, nz, nw; 
     //Textures 
     float tu, tv; 

    }; 

,然後創建的上述頂點的對象的陣列的頂點緩衝器。我會告訴着色器位置,法線和紋理的偏移量是多少,着色器能夠正確映射這些值。

在Android上的Java中,使用OpenGL ES 2.0,我已經能夠爲位置,法線和紋理創建單獨的浮點數組,或者爲其中的所有浮點數組創建單個浮點數組,但是我指定了偏移量沒有找到一種方法來告訴緩衝區我正在使用一組對象。這可能嗎?或者我需要自己生成一組浮動數據?

回答

1

不,據我所知在Java中這是不可能的。

在C和C++中,它可以像對象數組一樣工作,對象在內存中連續對齊,它們的成員變量也是如此。所以你有一個大的連續數據塊傳給GL。

Java通過引用存儲對象 - 所以您應該有一個引用數組。內存中的實際對象不是連續對齊的。

+0

謝謝。這就是我的想法,但我希望我錯了,有一種方法。 – Nikhil

相關問題