簡體   English   中英

在OpenGL中使用sampler2D數組是否有任何限制

[英]Is there any limitation of using sampler2D array in OpenGL

我在我的glsl程序中使用了sampler2d數組:

uniform sampler2D diffuseMaps[100]; 

我通過了如下的紋理:

for (int i = 0 ; i < textures.size() ; i++)
{ 
    glActiveTexture(GL_TEXTURE0 + i);
    glBindTexture(GL_TEXTURE_2D, textures[i]->textureId);

    std::string name = "diffuseMaps[" + std::to_string(i) + "]";
    GLuint loc = glGetUniformLocation(shader->getHandle(), name.c_str());
    glUniform1i(loc, i);
}

效果很好,我有80個紋理 ,OpenGl的索引不超過GL_TEXTURE31

它僅能在我的硬件(GTX 1070Ti)上運行嗎?

那其他硬件呢?

我可以使用的紋理數量是否有限制?

可以創建多少個紋理沒有限制,但是着色器可以同時使用多少個紋理沒有限制。 這是由MAX_TEXTURE_IMAGE_UNITS定義的。 在OpenGL 4.X中,盡管GPU可能允許您使用更多紋理,但至少可以使用16個紋理。 在撰寫本文時,任何硬件都不太可能允許您同時采樣80個紋理。

當需要更多紋理時,應考慮使用至少支持256層的陣列紋理 另一種選擇是將紋理合並為3D紋理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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