• EGL函数翻译--eglChooseConfig


    EGL函数翻译–eglChooseConfig

    函数名

    EGLBoolean eglChooseConfig(	EGLDisplay display,
     							EGLint const* attrib_list,
     							EGLConfig* configs,
     							EGLint config_size,
     							EGLint* num_config);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    参数描述

    参数display: EGLDisplay的显示连接。
    参数attrib_list: 指定"frame Buffer(帧缓冲)"配置所匹配的属性列表。
    参数configs: 输出满足参数“attrib_list(属性列表)”的“farme buffer(帧缓冲)”配置数组。
    参数config_size:指定要返回帧缓冲配置数字的大小。
    参数num_config:输出满足“属性列表”的帧缓冲配置数组的数量。

    详细描述

    eglChooseConfig()函数输入由用户指定的“属性列表”和想要的EGLConfig“配置数量”返回与“属性列表”匹配的“帧缓冲”的EGLConfig配置数组。返回的 EGLConfig 对象可被用于所有需要“帧缓冲”配置的EGL函数。
    如果参数“configs”不为NULL,则参数“configs”指向的数组中数量最多“config_size”个。实际"configs"指向的数组中EGLConfig对象数量为“num_config”个。EGLConfig 为一个 void* 类型的指针,参数configs 是一个指向指针的指针
    如果参数“configs”为NULL,则参数“config”中不会有任何值,但与属性列表匹配的EGLConfig 数量会返回到参数“num_config”中。在这种情况下,一般忽略参数“config_size”,可以先通过参数“configs”为空,获取匹配参数“attrib_list”属性列表的EGLConfig 数组的数量,然后分配一个匹配数量的EGLConfig数组,其它参数不变情况传给一个新的eglChooseConfig()函数。
    属性列表(attrib_list)中所有属性,包括boolean属性,后面紧跟相应的所需值。该列表以EGL_NONE结束。如果属性列表中没有指定某属性,则使用默认值(则某属性为被认为是隐式指定的)。例如属性"EGL_DEPTH_SIZE"值未指定,则默认值是零;对于某些属性其默认值为“EGL_DONT_CARE”,这意味着该属性的任何值都可以,因此不会检查该属性。
    如果与给定属性列表匹配的“帧缓冲”配置对象(EGLConfig)大于1个,则根据“最佳”匹配标准排序EGLConfig对象列表;每个属性的匹配条件和确切的排序顺序如下:
    对于位掩码属性EGL_CONFORMANT、EGL_RENDERABLE_TYPE和EGL_SURFACE_TYPE,匹配时仅考虑掩码的非零位。指定的位掩码属性值中为零的任何位都可以是零,也可以是结果配置的属性值中的一。
    属性列表(attrib_list)中可能的属性、属性描述和对应属性值如下:

    属性:EGL_ALPHA_MASK_SIZE
    描述:值为非负整数,以位为单位,指示所需的alpha掩码缓冲区大小。默认值为零。
    
    属性:EGL_ALPHA_SIZE
    描述:值为非负整数,指定颜色缓冲区中alpha通道的大小;值为零,则选alpha通道位数最小的颜色缓冲区,否则选择具有至少指定大小的
    alpha通道的颜色缓冲区;默认值为零。
    
    属性:EGL_BIND_TO_TEXTURE_RGB
    描述:值只能为EGL_DONT_CARE,EGL_TRUE,EGL_FALSE三者之一。如果值为 EGL_TRUE,则只支持将“帧缓区”中“颜色缓冲区”绑定到 
    OpenGL ES的RGB纹理上。目前只支持“pBuffer”类型的帧缓冲区。默认值为EGL_DONT_CARE。
    
    属性:EGL_BIND_TO_TEXTURE_RGBA
    描述:值只能为EGL_DONT_CARE,EGL_TRUE,EGL_FALSE三者之一。如果值为 EGL_TRUE,则只支持将“帧缓区”中“颜色缓冲区”绑定到
    OpenGL ES的RGBA纹理上。目前只支持“pBuffer”类型的帧缓冲区。默认值为EGL_DONT_CARE。
    
    属性:EGL_BLUE_SIZE
    描述:值为非负整数,指定颜色缓冲中蓝色分量的位数(RGBA颜色模型,B 所占位数)。如果该值为零,则首选蓝色分量最小的颜色缓冲区,否则
    选择具有至少指定大小的蓝色分量的颜色缓冲区;默认值为零。
    
    属性:EGL_BUFFER_SIZE
    描述:值为非负整数,以位为单位指定颜色缓冲区的大小;优先选择至少具有指定大小的最小颜色缓冲区。默认值为零。颜色缓冲区大小是
    EGL_RED_SIZE、EGL_GREEN_SIZE、EGL_BLUE_SIZE、EGL_ALPHA_SIZE的总和,并且不包括可能存在于像素格式中的任何填充位。通常
    优先选择的是为这些颜色分量单独指定所需的大小。
    
    属性:EGL_COLOR_BUFFER_TYPE
    描述:值为EGL_RGB_BUFFER 或 EGL_LUMINANCE_BUFFER之一;
    值为EGL_RGB_BUFFER,则颜色缓冲为RGB颜色缓冲,在这种情况下则属性EGL_RED_SIZE、EGL_GREEN_SIZE、EGL_BLUE_SIZE必须为非零,
    且EGL_LUMINAACE_SIZE必须为零。
    值为EGL_LUMINANCE_BUFFER,则颜色缓冲区为亮度颜色缓冲,在这种情况下则属性EGL_RED_SIZE、EGL_GREEN_SIZE、EGL_BLUE_SIZE
    必须为零,且EGL_LUMINAACE_SIZE必须为非零。
    对于RGB颜色缓冲区或者亮度颜色缓冲区,属性EGL_ALPHA_SIZE的值没有限制,可为零或非零
    
    属性:EGL_CONFIG_CAVEAT:
    描述:值只能为:EGL_DONT_CARE、EGL_NONE、EGL_SLOW_CONFIG或 EGL_NON_CONFORMANT_CONFIG 之一。默认为EGL_DONT_CARE
    如果值为EGL_DONA_CARE,不用关心此属性的配置。
    如果值为EGL_NONE,则会为此属性匹配不带警告的配置
    如果值为EGL_SLOW_CONFIG
    如果值为EGL_CONFORMANT_CONFIG,则匹配不支持OpenGL ES 上下文的配置。
    如果EGL版本大于等于1.3,则EGL_CONFORMANT_CONFIG以过时,因为可以在每个客户端API的基础上通过EGL_CONFORMANT属性指定
    相同的信息,而不仅仅是针对OpenGL ES。
    
    属性:EGL_CONFORMANT
    描述:帧缓冲区配置支持哪种类型的客户端API上下文。默认值为零。(大多数时候不用关心此配置)
    值为:EGL_OPENGL_BIT,配置支持创建OpenGL 上下文。
    值为:EGL_OPENGL_ES_BIT,配置支持创建OpenGL ES 1.0或1.1 上下文。
    值为:EGL_OPENGL_ES2_BIT,配置支持创建OpenGL ES 2.0的上下文。
    值为:EGL_OPENVG_BIT,配置支持创建OPenVG 的上下文。
    比如,如果值为EGL_OPENGL_ES_BIT,只有支持创建符合OpenGL ES 1.0或1.1上下文的帧缓冲配置才会被匹配。
    
    属性:EGL_DEPTH_SIZE
    描述:值为非负整数,指定深度缓冲区大小;优先选择至少具有指定大小的最小深度缓冲区。
    如果值为零,优先选择不具有深度缓冲区的帧缓冲区配置。 默认值为零。
    
    属性:EGL_GREEN_SIZE
    描述:值为非负整数,指定颜色缓冲中绿色分量的位数(RGBA颜色模型,G 所占位数)。如果该值为零,则首选绿色分量最小的颜色缓冲区,否则
    选择具有至少指定大小的蓝色分量的颜色缓冲区;默认值为零。
    
    属性:EGL_LEVEL(暂未翻译)
    属性:EGL_LUMINANCE_SIZE(暂未翻译)
    属性:EGL_MATCH_NATIVE_PIXMAP(暂未翻译)
    属性:EGL_NATIVE_RENDERABLE(暂未翻译)
    
    属性:EGL_MAX_SWAP_INTERVAL
    描述:值为整数,该整数指示可以传递给eglSwapInterval()函数的最大值,默认值为EGL_DONT_CARE。
    
    属性:EGL_MIN_SWAP_INTERVAL
    描述:值为整数,该整数指示可以传递给eglSwapInterval()函数的最小值,默认值为EGL_DONT_CARE。
    
    属性:EGL_RED_SIZE
    描述:值为非负整数,指定颜色缓冲中红色分量的位数(RGBA颜色模型,R 所占位数)。如果该值为零,则首选红色分量最小的颜色缓冲区,否则
    选择具有至少指定大小的红色分量的颜色缓冲区;默认值为零。
    
    属性:EGL_SAMPLE_BUFFERS(暂未翻译)
    
    属性:EGL_SAMPLES
    描述:多重采样最小样本数。
    
    属性:EGL_STENCIL_SIZE
    描述:值为非负整数,以位为单位,指定模板缓冲区大小。优先选择至少具有指定大小的最小模板缓冲区配置。默认值为0。
    注意:模板缓冲区仅支持OpenGL 或 OpenGL ES API
    
    属性:EGL_RENDERABLE_TYPE
    描述:值为位掩码,指示帧缓冲区配置必现支持使用eglCreateContext()创建哪些类型的客户端上下文API。
    掩码位 与属性EGL_CONFORMENT的掩码位相同。默认值为:EGL_OPENGL_ES_BIT。
    
    属性:EGL_SURFACE_TYPE
    描述:帧缓冲区配置 支持的EGL表面类型,值为掩码位。掩码位包括:
    EGL_MULTISAMPLE_RESOLVE_BOX_BIT:
    EGL_PBUFFER_BIT:帧缓冲区配置 支持创建PBuffer(Pixel Buffer) surfaces
    EGL_PIXMAP_BIT:帧缓冲区配置支持创建pixmap Buffer surfaces
    EGL_SWAP_BEHAVIOR_PRESERVED_BIT:
    EGL_VG_ALPHA_FORMAT_PRE_BIT:
    EGL_VG_COLORSPACE_LINEAR_BIT:
    EGL_WINDOW_BIT:帧缓冲区配置支持创建window surfaces( 默认值)
    
    属性:EGL_TRANSPARENT_TYPE(暂未翻译)
    属性:EGL_TRANSPARENT_RED_VALUE(暂未翻译)
    属性:EGL_TRANSPARENT_GREEN_VALUE(暂未翻译)
    属性:EGL_TRANSPARENT_GREEN_VALUE(暂未翻译)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99

    错误码

    返回值:GL_FALSE 函数调用失败。GL_TRUE 返回可用的配置,和可用配置数量
    eglGetError()值
    EGL_BAD_DISPLAY :参数display 不是一个有效的EGLDisplay 对象
    EGL_BAD_ATTRIBUTE :参数attrib_list中数据有错误
    EGL_NOT_INITIALIZED :参数display 没有被初始化
    EGL_BAD_PARAMETER :参数num_config是个空指针

    实例

    选择一个渲染API使用OpenGL ES 3、颜色缓冲区为RGBA:8888的PBuffer

    实例代码
     EGLDislay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
     if(display == EGL_NO_DISPLAY)
     {
     	std::cout<<"eglGetDisplay failed" << std::endl;
     	return;
     }
     EGLInt major;
     EGLIint minor;
     EGLBoolean init=  eglInitialize(display,&major,&minor);  
     if(!init)				//返回失败												
     {
     	std::cout<<"eglInitializeFailed" << std::endl;	
     	int errCode = eglGetError();
     	if(errCode == EGL_BAD_DISPLAY)
     	{	
    	}
    	else if(errCode == EGL_NOT_INITIALIZED)
    	{
    	}
     	return;
     } 
     
     EGLint cfgAttrList[] = 
     {
     	EGL_SURFACE_TYPE,EGL_PBUFFER_BIT,			//surface 类型 PBuffer,
    	EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT,
    	EGL_COLOR_BUFFER_TYPE,EGL_RGB_BUFFER,
    	EGL_BIND_TO_TEXTURE_RGBA,EGL_TRUE,	//为true,支持将Surface 的颜色缓冲区 绑定到OpenGL ES RGBA纹理的帧缓冲区配置
    	EGL_RED_SIZE,8,
    	EGL_GREEN_SIZE,8,
    	EGL_BLUE_SIZE,8,
    	EGL_ALPHA_SIZE,8,
    	EGL_NONE,EGL_NONE		
     }
     EGLConfig config;
     EGLint numberCfgs = 0;
    if (!eglChooseConfig(dPtr->mDisplay, cfgAttrList, &config, 1, &numberCfgs))
    	{
    			std::cout << " eglChooseConfig failed" <<std::endl;
    			return;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    英文连接

    链接: https://registry.khronos.org/EGL/sdk/docs/man/

    声明

    由于英语水平有限,可能有些翻译或者理解不是特别到位,有错误之处,希望大家指出,本人及时矫正。此函数只翻译了一些常用的属性,有些属性由于本人也没怎么使用过,固暂未翻译。

  • 相关阅读:
    Python:入门与基本语法
    Download Quartz持久化数据库下载地址
    MobLink后台基本配置
    面向Ai设计的Mojo编程语言支持下载,当前只有Linux系统版本
    POST请求
    C++客户端Qt开发——常用控件QWidget
    msvcr120.dll丢失是什么意思,快速修复msvcr120.dll丢失的问题的方法分享
    使用 Watt Toolkit (原名 Steam++)加速github访问
    Linux系统安全配置
    4. JAVA 多线程并发
  • 原文地址:https://blog.csdn.net/u013125105/article/details/133588270