OpenGL ES 纹理采样的数量限制

OpenGL ES 纹理采样的数量限制

零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础

零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 特效

零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 转场

零基础 OpenGL ES 学习路线推荐 :  OpenGL ES 学习目录 >> OpenGL ES 函数

零基础 OpenGL ES 学习路线推荐 :  OpenGL ES 学习目录 >> OpenGL ES GPUImage 使用

零基础 OpenGL ES 学习路线推荐 :  OpenGL ES 学习目录 >> OpenGL ES GLSL 编程


一.简介

在 OpenGL 的 shader 中我们使用类型为 sampler2D 的 uniform 来进行纹理采样.但是 API 不会无限制的支持纹理, OpenGL 的纹理数量限制则由以下三个值指定:

  1. GL_MAX_TEXTURE_IMAGE_UNITS:表示我们可以在片元着色器(FS)中使用的纹理单元,移动设备默认为 8 ,PC端默认为 16(不同机型可能表现不同);
  2. GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:表示我们可以在顶点着色器(VS)中使用的纹理单元,移动设备默认为 8 ,PC端默认为 16(不同机型可能表现不同);
  3. GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:表示我们可以使用的纹理单元为 0 ~ 31. 这 32 个纹理单元 顶点着色器(VS) 和 片元着色器(FS) 均可以访问(不同机型可能表现不同);

在 OpenGL ES 通过函数 glGetIntegerv 获取结果之前必须设置 OpenGL 上下文;

/*******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL  ES 纹理采样的数量限制
//@Time:2022/11/06 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/*******************************************************************************************/


//片元着色器(FS)中使用的纹理单元最大数量
int maxTextureUnits = 0;
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &maxTextureUnits );

// 顶点着色器(VS)中使用的纹理单元最大数量
int maxVertexTextureUnits = 0;
glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, &maxVertexTextureUnits );

//顶点着色器(VS)和片元着色器(FS)中均可以使用的纹理单元最大数量
int maxCombinedTextureUnits = 0;
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxCombinedTextureUnits );

具体结果根据设备测试而定,不同的设备表现结果不一样;

GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS/GL_MAX_TEXTURE_IMAGE_UNITS:一般在移动设备中(IOS/ANDROID),片元着色器(FS)和 顶点着色器(VS)中使用的纹理单元最大数量都是 8,PC 端电脑是 16;

GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:一般在移动设备中(IOS/ANDROID),片元着色器(FS)和 顶点着色器(VS)中使用的纹理单元最大数量都是 16,PC 端电脑是 32;


在 OpenGL ES 中超出最大数目的纹理将无法在渲染后显示;

在 OpenGL ES 中超出最大数目的纹理将无法在渲染后显示;

在 OpenGL ES 中超出最大数目的纹理将无法在渲染后显示;


二.猜你喜欢

  1. OpenGL ES 简介
  2. OpenGL ES 版本介绍
  3. OpenGL ES 2.0 和 3.0区别
  4. OpenGL ES 名词解释(一)
  5. OpenGL ES 名词解释(二)
  6. OpenGL ES GLSL 着色器使用过程
  7. OpenGL ES EGL 简介
  8. OpenGL ES EGL 名词解释
  9. OpenGL ES EGL eglGetDisplay
  10. OpenGL ES EGL eglInitialize
  11. OpenGL ES EGL eglGetConfigs
  12. OpenGL ES EGL eglChooseConfig
  13. OpenGL ES EGL eglGetError
  14. OpenGL ES EGL eglCreateContext
  15. OpenGL ES EGL eglCreateWindowSurface
  16. OpenGL ES EGL eglCreatePbufferSurface
  17. OpenGL ES EGL eglMakeCurrent
  18. OpenGL ES EGL eglSwapBuffer
  19. OpenGL ES EGL eglDestroySurface
  20. OpenGL ES EGL eglDestroyContext
  21. OpenGL ES EGL eglQueryContext
  22. OpenGL ES EAGLContext 和 EGLContext
  23. OpenGL ES OpenGL WebGL EGL WGL 区别
  24. OpenGL ES freeglut 下载和使用
  25. OpenGL ES glew 下载和使用
  26. OpenGL ES glut 下载和使用
  27. OpenGL ES glfw 下载和使用
  28. OpenGL ES glad 下载和使用
  29. OpenGL ES glut glew glfw glad freeglut
  30. OpenGL ES google angle
  31. OpenGL Windows 搭建环境(MFC版本)
  32. OpenGL ES Windows 搭建环境(MFC版本)
  33. OpenGL ES 版本检测
  34. OpenGL GLES 和 GLSL
  35. OpenGL ES 获取最大纹理尺寸 GL_MAX_TEXTURE_SIZE
  36. OpenGL ES 获取最多纹理单元数量 GL_MAX_TEXTURE_IMAGE_UNITS
  37. OpenGL ES 纹理采样的数量限制

推荐文章

发表评论