2014-12-13 24 views
0

根據調用glBufferData時的opengl文檔,size參數需要以字節爲單位。爲什麼這段代碼將BITS中的大小傳遞給opengl的glBufferData方法而不是字節(java)

然而,這是從程序片段(即工作完全正常)

long vertBsize = ((short)5) * 4l * 4l; 
glBindBuffer (GL.GL_ARRAY_BUFFER, vbuffer); 
glBufferData (GL.GL_ARRAY_BUFFER, vertBsize , points, GL.GL_STATIC_DRAW); 

根據Java文檔短爲16位,這樣在我的腦海此代碼段是不正確發送的比特數在點緩衝區中。

我是笨/方法太累了還是我失去了一些東西

+0

你能顯示'points'的定義/分配嗎?這很可能是正確的,但是如果沒有看到實際的大小就不可能分辨出來。例如,'points'可以是5個頂點,每個頂點有4個組件,每個組件4個字節(float)。所以5 * 4 * 4將是正確的字節大小。 – 2014-12-13 05:31:42

回答

1

@Reto Koradi的 - 更多的細節問題,最終導致了我答案。

點緩衝區包含所有浮點數。浮點數分爲四組:

{1.0,2.0,4.0,1.0, 
2.0,3.0,8.0,1.0, 
3.0,4.0,2.0,1.0, 
2.0,3.0,8.0,1.0, 
1.0,2.0,4.0,1.0} 

由於float == 32位== 4bytes。公式5(浮點數組)* 4(每組浮點數)* 4(每個浮點數據的字節數)確實達到了正確的字節數。

相關問題