gpt4 book ai didi

opengl - 如何创建我自己的 opengl 绑定(bind)或库

转载 作者:行者123 更新时间:2023-12-05 05:21:54 25 4
gpt4 key购买 nike

我对图形编程比较陌生,所以我想从最基础的开始。我看到有像 PyOpenGl 这样的库,它提供了对 opengl api 本身的绑定(bind)。现在,我真的很想自己创建像 PyOpenGl 这样的东西,这样我就可以了解这个过程中的一切是如何工作的。

我可以创建像 PyOpenGl 或 GLFW 这样的库吗?如果是这样,请给我一些关于我应该做什么的一般提示。

如果不是,请向我解释为什么我不能创建自己的绑定(bind),如果我的上述问题听起来很荒谬,我深表歉意。

最佳答案

PyOpenGL 是一个相当薄的包装器,在大多数情况下,它只是将 Python 函数调用转换为对同名 native 代码函数的调用。混合中有一些小细节,例如调用约定,但这些实际上很无聊。事实是(就 OpenGL 而言)您使用 PyOpenGL 在 Python 中编写的源代码看起来与您在 C 中编写的源代码几乎相同。PyOpenGL 有一些“聪明”的东西,比如提供方法接口(interface) NumPy 数组到采用数据指针参数的 OpenGL 调用,但这只是内部管理。

当您使用 C 或更极端的汇编语言(完全可能)执行 OpenGL 调用时,这是您可以使用的最低级别(使用 OpenGL),而不是编写您自己的 GPU 设备驱动程序。编写 GPU 设备驱动程序是一项非常艰巨的工作;它实际上需要数百万行 C 代码(据说 NVidia 的 OpenGL 实现包含大约 4000 万行 LoC,有用于 AMD 和 Intel GPU 的开源驱动程序,并且它们每个都有 MLoC)。

如果您对中间立场感兴趣,请查看 Vulkan API。如果为图形编写更高级别的包装器是你的事,我建议你为 Vulkan 实现一些更高级别的 API/渲染器并将其连接到 Python。作为一种学习经验 (恕我直言),这可能会带来更多返回。

关于opengl - 如何创建我自己的 opengl 绑定(bind)或库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com