數據源:爪哇:FloatBuffer到OpenGL的 - 包裹()與分配()與BufferUtils.createBuffer()
float[] v = { ... };
工作實施例:
FloatBuffer buf = BufferUtils.createFloatBuffer(v.length);
buf.put(v);
buf.flip(); // or buf.rewind()
緩衝器現在可被上傳到opengl和工作正常:
...
glBufferData(..., buf, ...);
...
爲什麼下面的緩衝區創建的例子不工作?
不工作1:
FloatBuffer buf = FloatBuffer.wrap(v);
不工作2:
FloatBuffer buf = FloatBuffer.allocate(v.length);
buf.put(v);
buf.flip(); // or buf.rewind()
編輯:
瀏覽API代碼後,我發現了:
在的情況下工作示例memAddress(buf)返回一個有效的地址,但在其他情況下,它只返回0.
其他相關信息:
why am i getting a FloatBuffer is not direct error?
這也可能取決於平臺。我在Android上使用了'FloatBuffer.wrap()',沒有任何問題。 –