2015-08-20 60 views
-1

我正在寫一個解析器.obj文件與多個材料和組(所以我也解析usemtl和材料文件)。我可以加載和渲染頂點。我如何處理不同的紋理和材料?OpenGL渲染.obj文件與多種材質和紋理

我是一個接一個呈現每個材質還是有一個巨着色器來選擇ID?我如何在GPU緩衝區中存儲不同的紋理? (目前我使用GL_TEXTURE_2D_ARRAY但它們必須具有相同的大小。

+2

我按材質分組面​​片,並分別渲染每個材質,而不是一次又一次地切換紋理。 – Spektre

回答

0

因此,要處理不同的材料,每個對象都有材料規範,比如ambient_color,diffuse_color和specular_color,你簡單地說,通過這些值作爲uniform到片段着色器並使用不同的材質規格渲染對象

此外,您可以在一個片段着色器中同時使用128個紋理,因此您可以渲染具有超過紋理的對象。但大多數情況下,對象是由組構成的組只有一個紋理,所以你只需要在片段着色器中使用對象,只是你爲紋理傳遞的統一值將會改變。

有效處理此問題的最佳方法是將相同紋理的組一起渲染,以防止紋理髮生大量變化。