2012-02-01 60 views
3

在我看來,在glVertexAttribPointer(它指定與來自VBO的特定數據集關聯的屬性索引)和glBindAttribLocation(其指定將索引分配給哪個節目頂點屬性變量名稱)之間,並不需要啓用或禁用屬性索引自己。什麼是可能需要一個指數是「被禁止」的情況呢?glEnableVertexAttribArray存在的真正原因嗎?

回答

7

是什麼,可能需要一個指標是「被禁止」的情況呢?

如果你想設置一個恆定的頂點屬性值glVertexAttrib,wi沒有通過一個完整的陣列。

http://www.opengl.org/sdk/docs/man/xhtml/glVertexAttrib.xml

+1

yup。有趣的是,他們可以指定stride = 0對應一個常量屬性值。但是,stride = 0意味着打包,即stride = size * sizeof(type)。如果你考慮這個問題,這是違反直覺的......(對不起,我會喋喋不休的) – Bahbar 2012-02-01 12:58:44

+1

@Bahbar:我認爲在功能中包含「隱藏」功能的API是違反直覺的。像glVertexAttribPointer這樣的函數只能用於提供指針及其格式(至少我會這樣做)。通過額外狀態進行常量/數組訪問之間的切換是我認爲一致和直觀的。 – datenwolf 2012-02-01 13:00:59

+0

當然,我並不是爭辯說你應該爲了它而隱藏功能。但是stride = 0 _is_隱藏功能。如果這在規範中並不是特例,那麼你可以想象得到的效果是= 0,這實際上是一個不變的屬性。這就是我所說的:D – Bahbar 2012-02-01 13:03:42

相關問題