OpenGL 工具函数

在 1.0.7 版本加入.

kivy.graphics.opengl_utils.gl_get_extensions() list

返回可用的OpenGL扩展列表。列表中的所有名称均已去除开头的`GL_`前缀(如果存在),并转换为小写。

>>> print(gl_get_extensions())
['arb_blend_func_extended', 'arb_color_buffer_float', 'arb_compatibility',
 'arb_copy_buffer'... ]
kivy.graphics.opengl_utils.gl_get_texture_formats() tuple

返回由kivy识别的纹理格式列表。该纹理列表仅供参考,但可能不受您的硬件支持。如果您需要支持的纹理列表,必须按如下方式过滤该列表::

supported_fmts = [gl_has_texture_format(x) for x in gl_get_texture_formats()]
kivy.graphics.opengl_utils.gl_get_version() tuple

返回从GL_VERSION解析出的OpenGL(主版本号,次版本号)。

在 1.2.0 版本加入.

kivy.graphics.opengl_utils.gl_get_version_major() int

返回OpenGL版本的主要组件。

在 1.2.0 版本加入.

kivy.graphics.opengl_utils.gl_get_version_minor() int

返回OpenGL版本的小版本号。

在 1.2.0 版本加入.

kivy.graphics.opengl_utils.gl_has_capability(int cap) int

返回一个OpenGL能力的状态。这是一个自动发现Kivy可能需要的所有能力的封装。当前测试的能力包括:

  • GLCAP_BGRA:测试BGRA纹理格式的支持情况

  • GLCAP_NPOT:测试非二次幂纹理的支持情况

  • GLCAP_S3TC:测试对S3TC纹理(DXT1、DXT3、DXT5)的支持

  • GLCAP_DXT1:测试DXT纹理(S3TC的子集)的支持情况。

  • GLCAP_ETC1:测试ETC1纹理的支持情况

kivy.graphics.opengl_utils.gl_has_extension(name) int

检查某个OpenGL扩展是否可用。如果名称以`GL_`开头,测试时会将其去除并转换为小写。

>>> gl_has_extension('NV_get_tex_image')
False
>>> gl_has_extension('OES_texture_npot')
True
kivy.graphics.opengl_utils.gl_has_texture_conversion(fmt) int

如果纹理可以转换为原生格式,则返回1。

kivy.graphics.opengl_utils.gl_has_texture_format(fmt) int

返回您的系统是否原生支持或通过转换支持某种纹理格式。例如,如果您的显卡不支持“bgra”,我们能够在软件模式下将其转换为“rgba”。

kivy.graphics.opengl_utils.gl_has_texture_native_format(fmt) int

如果纹理格式是原生处理的,则返回1。

>>> gl_has_texture_format('azdmok')
0
>>> gl_has_texture_format('rgba')
1
>>> gl_has_texture_format('s3tc_dxt1')
[INFO   ] [GL          ] S3TC texture support is available
[INFO   ] [GL          ] DXT1 texture support is available
1
kivy.graphics.opengl_utils.gl_register_get_size(int constid, int size)

在glGet*中使用的OpenGL常量与元素数量之间注册一个关联。

例如,GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 是一个特殊的 pname,它将返回整数 1(仅限 NVIDIA)。

>>> GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = 0x9047
>>> gl_register_get_size(GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, 1)
>>> glGetIntegerv(GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX)[0]
524288