一个从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第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener