[英]Fastest way to deal with multiple textures in OpenGL?
對於每種類型的紋理(環境、漫反射、鏡面反射等),assimp 將返回一個紋理列表。 我們如何處理這么多紋理?
似乎每個 model 的紋理綁定數量可能會急劇增加。 如果我們能夠將紋理類型的每個列表轉換為單個紋理數組或 map 會很有趣,這可能嗎?
只是為了讓你可以想象,在我的代碼中我有這個材料 class:
class Material {
private:
Shader* shader;
Texture* diffuseMap;
Texture* specularMap;
Texture* emissiveMap;
float shineness;
public:
[...]
};
所以我試圖將紋理列表轉換為與其類型相對應的單個 map。
紋理圖集(@BDL 在評論中提到)是一種選擇。 另一個是紋理 arrays,它適用於 1D 和 2D 紋理,但是 - 根據您的情況 - 具有強制所有圖像使用相同格式的缺點。
ultima ratio 將是無綁定紋理,您只需將紋理的 64 位 ID 傳遞給着色器而不將其綁定到紋理單元: https://www.khronos.org/opengl/wiki/Bindless_Texture
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.