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