- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
OpenGL 的传统是让用户使用 unsigned int 句柄来操作 OpenGL 对象。为什么不直接给出一个指针呢?与指针相比,唯一 ID 有何优点?
最佳答案
TL;DR:OpenGL ID 不会双射映射到内存位置。单个 OpenGL ID 可能同时引用多个内存位置。此外,OpenGL 也被设计用于分布式渲染架构(如 X11),并且给定间接上下文,在不同机器上运行的程序可能会使用相同的 OpenGL 上下文。
OpenGL 被设计为与架构和显示系统无关的 API。当 OpenGL 首次开发时,这是根据客户端-服务器显示架构(如 X11)发生的。如果您查看 OpenGL 规范,即使是现代 OpenGL-4,它也指的是客户端和服务器。
然而,在客户端/服务器架构中,指针没有任何意义。其一,如果不跳过一些环节,客户端就无法访问服务器的地址空间。即使您设置了共享内存映射,客户端和服务器的对象地址也不相同。除此之外,在像 X11 这样的架构上,单个间接 OpenGL 上下文可以由多个客户端使用,甚至可以在不同的机器上运行。指针根本不起作用。
最后但并非最不重要的一点是,OpenGL 对象模型是高度抽象的,并且 OpenGL 绘图模型是异步的 假设我执行以下操作:
id = glGenTextures(1)
glBindTexture(id)
glTexStorage(…)
glTexSubImage(image_a)
draw_something()
glTexSubImage(image_b)
draw_someting_b()
当这个小片段结束时,实际上可能还没有绘制任何东西,因为还没有到达同步点(glFinish、glReadPixels、缓冲区交换)。请注意对 glTexSubImage 的两次调用,它们发生在同一个 id 上。当像素最终放入帧缓冲区时,两个不同的图像将从单个纹理 ID 中获取,因为 OpenGL 向您保证,事物看起来就像是同步绘制的一样。因此,在绘图批处理结束时,单个对象 ID 可能引用内存中不同位置的不同数据集的整个集合。
关于opengl - 为什么 OpenGL 给对象提供句柄而不是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690014/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!