一个从openglapi注册表中提取信息的简单工具

opengl-registr的Python项目详细描述


opengl注册表

注意:存储库当前正在进行中。这个警告 在PyPI上发布第一个稳定版本后将删除

一个从openglapi注册表中提取信息的简单工具。在

注册中心目前位于KhronosGroup组织的github上: https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/master/xml/gl.xml

从源设置

克隆repo并输入项目目录。 我们假设用户将设置一个virtualenv。在

pip install -e .

这将在可编辑模式下安装包 意思是你可以继续改变来源 每次更换都要安装。在

如果你真的想安装软件包 不想修改其内容:

^{pr2}$

运行测试

我们使用tox来运行覆盖py3.4、py3.6和py3.7的flake9和coverage测试。在

pip install -r tests/requirements.txt
# All enviroments
tox

# Specific enviroments
tox -e py35
tox -e py36
tox -e py37
tox -e pep8

正在生成文档

pip install -r docs/requirements.txt
python setup.py build_sphinx

注册信息

注册表只是一个巨大的xml文件,通常名为gl.xml,其中包含 有关枚举和函数的信息。然后在 特性(opengl/es版本)和扩展。这还包括 随着版本的进展,必需的和已删除的枚举和函数。在

<registry><!-- GL type definitions. --><types><type>typedef unsigned int <name>GLenum</name>;</type><type>typedef unsigned char <name>GLboolean</name>;</type>
        ...
    </types><!-- An attempt to group enums together (not critical information) --><groups><groupname="CullFaceMode"><enumname="GL_BACK"/><enumname="GL_FRONT"/><enumname="GL_FRONT_AND_BACK"/></group>
        ...
    </groups><!-- Multiple enums blocks with the enum names and values. Can point to a group --><enumsnamespace="GL"group="ContextProfileMask"type="bitmask"><enumvalue="0x00000001"name="GL_CONTEXT_CORE_PROFILE_BIT"/><enumvalue="0x00000002"name="GL_CONTEXT_COMPATIBILITY_PROFILE_BIT"/></enums>
    ...

    <!-- Details information about every GL function --><commandsnamespace="GL"><command><proto>void <name>glDrawArrays</name></proto><paramgroup="PrimitiveType"><ptype>GLenum</ptype><name>mode</name></param><param><ptype>GLint</ptype><name>first</name></param><param><ptype>GLsizei</ptype><name>count</name></param><glxtype="render"opcode="193"/></command>
        ...
    </command><!-- Multiple feature blocks for each opengl version.         These include the required and remove section         referencing command names and enum names.         Only including parts of GL 3.2 as it shows removal.    --><featureapi="gl"name="GL_VERSION_1_1"number="1.1">...</feature><featureapi="gl"name="GL_VERSION_1_2"number="1.2">...</feature><featureapi="gl"name="GL_VERSION_1_3"number="1.3">...</feature><featureapi="gl"name="GL_VERSION_1_4"number="1.4">...</feature><featureapi="gl"name="GL_VERSION_1_5"number="1.5">...</feature><featureapi="gl"name="GL_VERSION_2_0"number="2.0">...</feature><featureapi="gl"name="GL_VERSION_2_1"number="2.1">...</feature><featureapi="gl"name="GL_VERSION_3_0"number="3.0">...</feature><featureapi="gl"name="GL_VERSION_3_1"number="3.1">...</feature><featureapi="gl"name="GL_VERSION_3_2"number="3.2"><require><enumname="GL_CONTEXT_CORE_PROFILE_BIT"/><enumname="GL_CONTEXT_COMPATIBILITY_PROFILE_BIT"/><enumname="GL_LINES_ADJACENCY"/><enumname="GL_LINE_STRIP_ADJACENCY"/>
            ...
        </require><requirecomment="Reuse ARB_draw_elements_base_vertex"><commandname="glDrawElementsBaseVertex"/><commandname="glDrawRangeElementsBaseVertex"/><commandname="glDrawElementsInstancedBaseVertex"/><commandname="glMultiDrawElementsBaseVertex"/></require><removeprofile="core"comment="Compatibility-only GL 1.0 features removed from GL 3.2"><commandname="glNewList"/><commandname="glEndList"/><commandname="glCallList"/><commandname="glCallLists"/><commandname="glDeleteLists"/>
            ...
        </remove><removeprofile="core"comment="Compatibility-only GL 1.1 features removed from GL 3.2"><enumname="GL_QUADS"/><enumname="GL_POLYGON"/>
            ...
        </remove>
        ...
    </feature><featureapi="gl"name="GL_VERSION_3_3"number="3.3">...</feature><featureapi="gl"name="GL_VERSION_4_0"number="4.0">...</feature><featureapi="gl"name="GL_VERSION_4_1"number="4.1">...</feature><featureapi="gl"name="GL_VERSION_4_2"number="4.2">...</feature><featureapi="gl"name="GL_VERSION_4_3"number="4.3">...</feature><featureapi="gl"name="GL_VERSION_4_4"number="4.4">...</feature><featureapi="gl"name="GL_VERSION_4_5"number="4.5">...</feature><featureapi="gl"name="GL_VERSION_4_6"number="4.6">...</feature><!-- There will also be feature blocks for gles --><!-- Extension definitions are similar to features.         The numer of extensions gathered here is staggering,         but they can be filtered on the ``supported`` field         to make it easier to handle.    --><extensions><extensionname="GL_EXT_debug_label"supported="gl|glcore|gles2"><require><enumname="GL_PROGRAM_PIPELINE_OBJECT_EXT"/><enumname="GL_PROGRAM_OBJECT_EXT"/><enumname="GL_SHADER_OBJECT_EXT"/><enumname="GL_BUFFER_OBJECT_EXT"/><enumname="GL_QUERY_OBJECT_EXT"/><enumname="GL_VERTEX_ARRAY_OBJECT_EXT"/><commandname="glLabelObjectEXT"/><commandname="glGetObjectLabelEXT"/></require><requirecomment="Depends on OpenGL ES 3.0"><enumname="GL_SAMPLER"/><enumname="GL_TRANSFORM_FEEDBACK"/></require></extension><extensionname="GL_EXT_debug_marker"supported="gl|glcore|gles1|gles2"><require><commandname="glInsertEventMarkerEXT"/><commandname="glPushGroupMarkerEXT"/><commandname="glPopGroupMarkerEXT"/></require></extension>
        ...
    </extension></registry>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使图像以正确的速度在屏幕上移动,以适应所有显示   内存Java分配:从预先存在/分配的池中分配对象   java这种书写方式?   Java正则表达式查找字符串的开头   java是否可以创建一个类来处理安卓中的所有日志代码(例如log.d(TAG,message))   如何使用Selenium和java单击WebTable任意页面上的WebElement   java解析字符串中的文件名   java刷新JTree内容   java如何覆盖RequestMappingHandler   爪哇数石头、布、剪刀赢了多少   struts中的java无效令牌   swing JTree,优化算法,Java   java Tomcat和SSL:密钥库格式无效