我在應用程序中使用了各種「嵌套」上下文(用於着色器和幾何共享),所以我不能使用VAO,因爲它們不能在上下文之間共享。沒有VAO的每個着色器屬性的VBO或不同的方法?
我的網格數據被存儲在一個VBO作爲一種獨特的頂點的「池」,而在另一個VBO我存儲彌補臉上的指標。我目前在我的CAD應用程序中成功地使用了線框渲染,但我想添加一個平坦的陰影模式 - 爲此我需要臉部法線。
如果我需要頂點法線,我只是將數據附加到頂點位置數據,但是我不能這樣做,因爲根據頂點屬於哪個面被渲染,頂點將具有不同的面。理想情況下,我想創建另一個維持我的臉部法線和指數的VBO對,但是我不能將兩個VBO綁定到同一個目標,即使它們用於不同的屬性。
我明白,正常的途徑是使用沒有讓你指定多個駐國際中心組織到同一個目標進行VAO,而是因爲我的幾何背景是共享的,VAOs不是我不能使用它們。這個問題有其他解決方案嗎?
感謝您的快速回答。我懷疑這可能是這種情況,但是我拋出的是OpenGL Superbible 5ed中的一個部分''當前綁定緩衝區的記錄是在當前VAO中創建的,並用於該屬性。也就是說,glVertexAttribPointer不僅告訴OpenGL在緩衝區中可以找到頂點屬性的偏移量,但它也告訴OpenGL哪個緩衝區包含數據,因此可以使用多個緩衝區 - 每個屬性一個 - 同時...「'。這讓我感到困惑,因爲綁定一個緩衝區到一個綁定目標,解除綁定舊的緩衝區。 – cmannett85
@ cbamber85:的確如此。但是你使用不同緩衝區對象的事實並不意味着你使用不同的索引來訪問它們。對於多個屬性使用相同的緩衝區和爲多個屬性使用多個緩衝區之間沒有功能差異。唯一的區別是屬性數據來自何處。 –
啊,這是有道理的,並完全與我所看到的。 – cmannett85