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