文檔中提到void glBufferData(GLenum target,
GLsizeiptr size, const GLvoid * data,
GLenum usage);targetSpecifies the target buffer object.
The symbolic constant must be
GL_ARRAY_BUFFER,
GL_ELEMENT_ARRAY_BUFFER,
GL_PIXEL_PACK_BUFFER, or
GL_PIXEL_UNPACK_BUFFER.那幾個固定的參數(shù)應(yīng)該是固定的內(nèi)存地址,當(dāng)幾組數(shù)據(jù)被傳送到顯存中,繪制的時候顯卡是如何確定draw哪組頂點(diǎn)?初學(xué)OpenGL,很多不懂的地方。
1 回答

繁華開滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個贊
glBufferData函數(shù)執(zhí)行向所綁定的緩沖區(qū)寫入數(shù)據(jù)的操作,target參數(shù)是枚舉類型,只能取預(yù)設(shè)的幾個值,該參數(shù)用來指定緩沖區(qū)類型,而不是內(nèi)存地址。
執(zhí)行渲染操作的時候,也是先綁定某個緩沖區(qū),然后調(diào)用適當(dāng)?shù)暮瘮?shù),從該緩沖區(qū)某個指定偏移量開始,取一定量的數(shù)據(jù)進(jìn)行指定方式的渲染。渲染過程是由程序控制GPU完成的,不是說你把數(shù)據(jù)寫入緩沖區(qū)之后,顯卡自己就知道要顯示什么了。
由于OpenGL制定的是C語言接口,而C不是面向?qū)ο蟮?,所以封裝性和可讀性比較差,需要以C這種面向過程的思維方式來理解OpenGL。程序里每個函數(shù)都不能孤立地看,都要看它的上下文,比如上文中綁定了某個緩沖區(qū),那么接下來的操作就是針對這個緩沖區(qū)的。
- 1 回答
- 0 關(guān)注
- 223 瀏覽
添加回答
舉報
0/150
提交
取消