[√]glGetUniformLocation返回值的问题

简介: [√]glGetUniformLocation返回值的问题

OpenGL shader对uniform的数量是有限制的,可以通过以下几个属性获取对应的限制:

GL_MAX_UNIFORM_BLOCK_SIZE
GL_MAX_GEOMETRY_UNIFORM_BLOCKS 
GL_MAX_VERTEX_UNIFORM_BLOCKS
GL_MAX_FRAGMENT_UNIFORM_BLOCKS
GL_MAX_UNIFORM_BLOCK_SIZE # 缓冲区的可用存储空间也有限制

但是我发现上边的这几个属性在gles2中并没有,因为项目使用的ndk r15c

Android NDK与OpenGL ES的对应关系如下:

  • Android NDK r20及更早版本对应OpenGL ES 2.0。
  • Android NDK r21及以后的版本对应OpenGL ES 3.0及更高版本。

那么很确定就是OpenGL es2了,又找到其他的几个属性:

属性 Android
最大支持的纹理图像单元数,可用于从顶点着色器和片段处理器组合访问纹理贴图 _MAX_COMBINED_TEXTURE_IMAGE_UNITS
支持的最大纹理图像单元,可用于从片段着色器访问纹理贴图。 GL_MAX_TEXTURE_IMAGE_UNITS
最大支持的纹理图像单元,可用于从顶点着色器访问纹理贴图 GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS

实际运行过程中发现

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: 96
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: 16
GL_MAX_TEXTURE_IMAGE_UNITS: 16
GL_MAX_FRAGMENT_UNIFORM_VECTORS: 4096

glGetUniformLocation返回-1才是找不到,因为在shader中我们可以手动指定location,并且可以指定为0,所以这里也能反应出来0代表的不是找不到。

layout(location = 0) uniform mat4 projectionMatrix;

layout关键字在OpenGL中用于指定着色器变量的布局属性。它通常与输入(顶点着色器)和输出(片段着色器)变量一起使用,并提供有关如何将数据传递给着色器的额外信息。

之前一直欢迎shader有dead code,或者shader没有use,或者glGetError报错了,实际上这写点都没有问题。

目录
相关文章
|
小程序
搞定 小程序 Behavior
搞定 小程序 Behavior
90 0
uniapp请求接口返回:ER_SP_UNDECLARED_VAR: Undeclared variable: NaN 已解决
uniapp请求接口返回:ER_SP_UNDECLARED_VAR: Undeclared variable: NaN 已解决
144 1
解决g++编译C++报错unresolved external... (undefined reference ...)
解决g++编译C++报错unresolved external... (undefined reference ...)
344 0
解决g++编译C++报错unresolved external... (undefined reference ...)
NDK编译doubango时出现错误:undefined reference to ‘stderr‘
NDK编译doubango时出现错误:undefined reference to ‘stderr‘
152 0
|
Linux C语言
gcc编译出现 undefined reference to ‘pthread_create‘ 的解决方法
gcc编译出现 undefined reference to ‘pthread_create‘ 的解决方法
416 0
gcc编译出现 undefined reference to ‘pthread_create‘ 的解决方法
|
iOS开发
iOS linker command failed with exit code 1 (use -v to see invocation)解决方法
iOS linker command failed with exit code 1 (use -v to see invocation)解决方法
2430 0
|
C++ Windows
编译WINDOWS版SDL2:You should run hg revert SDL_config.h
编译WINDOWS版SDL2:You should run hg revert SDL_config.h
1256 0
|
iOS开发
xcode10 编译报错Multiple commands produce
xcode10 编译报错: Showing Recent Messages :-1: Multiple commands produce '/Users/ios/Library/Developer/Xcode/DerivedData/MyLiveStu...
6452 0
UWP DEP0700: 应用程序注册失败。[0x80073CF9] Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9)
原文:UWP DEP0700: 应用程序注册失败。[0x80073CF9] Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9) 现在部署的app项目八成是从以前的一个项目复制过来,修改的。
1568 0