簡體   English   中英

在 OpenGL 中處理多個紋理的最快方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM