opengl – GLSL float/vec3/vec4數組最大大小= GL_MAX_VERTEX_UNIFORM_VECTORS?


 

glGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS,&maxVertUniformsVect);
https://www.jb51.cc/css/217839.html

opengl es 1.1 : GL_MAX_VERTEX_UNIFORM_VECTORS: -->  168
        GL_MAX_VERTEX_UNIFORM_VECTORS: -->  64


uniform 的空間被頂點着色器和片段着色器分享。也就是說頂點着色器和片段着色器被鏈接到一起進入項目,它們分享同樣的uniform。因此一個在頂點着色器中聲明的uniform,相當於在片段着色器中也聲明過了。當應用程序裝載uniform 時,它的值在頂點着色器和片段着色器都可用。在鏈接階段,鏈接器將分配常量在項目里的實際地址,那個地址是被應用程序使用和加載的標識。

  另一個需要注意的是,uniform 被存儲在硬件被稱為常量存儲,這是一種分配在硬件上的存儲常量值的空間。因為這種存儲需要的空間是固定的,在程序中這種uniform 的數量是受限的。這個限制能通過讀gl_MaxVertexUniformVectors 和gl_MaxFragmentUniformVectors編譯變量得出。( 或者用GL_MAX_VERTEX_UNIFORM_VECTORSGL_MAX_FRAGMENT_UNIFORM_ VECTORS 為參數調用glGetIntegerv)OpenGL ES 2.0必須至少提供256 個頂點着色器uniform 和224個片段着色器uniform。

https://www.cnblogs.com/salam/p/4970418.html

 

 

    GLint num1,num2;
    glGetIntegerv(GL_MAX_VERTEX_UNIFORM_VECTORS,&num1);
    qDebug() << "GL_MAX_VERTEX_UNIFORM_VECTORS: --> " << num1;
    glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_VECTORS,&num2);
    qDebug() << "GL_MAX_VERTEX_UNIFORM_VECTORS: --> " << num2;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM