零基础 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 的纹理数量限制则由以下三个值指定:
- GL_MAX_TEXTURE_IMAGE_UNITS:表示我们可以在片元着色器(FS)中使用的纹理单元,移动设备默认为 8 ,PC端默认为 16(不同机型可能表现不同);
- GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:表示我们可以在顶点着色器(VS)中使用的纹理单元,移动设备默认为 8 ,PC端默认为 16(不同机型可能表现不同);
- 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 中超出最大数目的纹理将无法在渲染后显示;
二.猜你喜欢
- OpenGL ES 简介
- OpenGL ES 版本介绍
- OpenGL ES 2.0 和 3.0区别
- OpenGL ES 名词解释(一)
- OpenGL ES 名词解释(二)
- OpenGL ES GLSL 着色器使用过程
- OpenGL ES EGL 简介
- OpenGL ES EGL 名词解释
- OpenGL ES EGL eglGetDisplay
- OpenGL ES EGL eglInitialize
- OpenGL ES EGL eglGetConfigs
- OpenGL ES EGL eglChooseConfig
- OpenGL ES EGL eglGetError
- OpenGL ES EGL eglCreateContext
- OpenGL ES EGL eglCreateWindowSurface
- OpenGL ES EGL eglCreatePbufferSurface
- OpenGL ES EGL eglMakeCurrent
- OpenGL ES EGL eglSwapBuffer
- OpenGL ES EGL eglDestroySurface
- OpenGL ES EGL eglDestroyContext
- OpenGL ES EGL eglQueryContext
- OpenGL ES EAGLContext 和 EGLContext
- OpenGL ES OpenGL WebGL EGL WGL 区别
- OpenGL ES freeglut 下载和使用
- OpenGL ES glew 下载和使用
- OpenGL ES glut 下载和使用
- OpenGL ES glfw 下载和使用
- OpenGL ES glad 下载和使用
- OpenGL ES glut glew glfw glad freeglut
- OpenGL ES google angle
- OpenGL Windows 搭建环境(MFC版本)
- OpenGL ES Windows 搭建环境(MFC版本)
- OpenGL ES 版本检测
- OpenGL GLES 和 GLSL
- OpenGL ES 获取最大纹理尺寸 GL_MAX_TEXTURE_SIZE
- OpenGL ES 获取最多纹理单元数量 GL_MAX_TEXTURE_IMAGE_UNITS
- OpenGL ES 纹理采样的数量限制
ChatGPT 3.5 国内中文镜像站免费使用啦
暂无评论内容