如何解决为什么EGL上下文仅与一个线程相关
我对EGL CONTEXT有点困惑,这意味着在GPU中特别使用3D。
线程在CPU端。每个线程都可以向GPU发送命令以执行对象绘图(使用着色器的顶点,纹理,切除...)
每个着色器都与一个程序有关,因此可以使用或不使用在着色器中定义的程序。为此,我们需要在绘制数组或元素之前绑定资源。
我认为初始化时,除摄像机框架(区别在于)之外,我都会将所有资源发送到GPU。如果我认为在移动设备上,则在CPU和GPU之间共享内存。需要通过线程定义上下文。是解释我不理解的事情。
如果需要执行着色器并使用一些资源,则不需要上下文。我只需要为正确的程序着色器绑定正确的资源即可。只要一一完成,任何线程都可以做到。拥有内存是很常见的,当然任何线程都可以逐个访问GPU上的任何资源。或者可能在GPU接收器的不同通道上,因此程序(着色器)也可能成为并行处理。
因此无需将资源分配给上下文。所有资源都应该可以通过référence访问。如果我通过program(shader)完成一个牵引,那么只需一个简单的调用(program,ressouce1,ressource2,ext)就可以了。
那么为什么每个背景都充满激情。有灵活性。不再需要共享上下文,对我而言,女巫不起作用。任何着色器都可以使用任何资源摘录...
我真的不知道为什么要使用EGL上下文,更不用说为什么要与线程相关了。
谢谢您的解释。
PS:我创建这个问题是因为使用OpenCL在JAVA EGL(线程+上下文)和C ++中的线程之间共享纹理是一场噩梦。我真的不理解纹理或顶点之类的混乱访问资源。 référence应该很简单。
解决方法
我真的不明白为什么要使用EGL上下文,更不用说为什么要使用线程了
...,因为这就是规范所说的。最终,如果您不同意设计,该规范以特定的方式起作用,那就是它的工作原理。
您可以在同一个共享组中分配多个EGL上下文-这允许从并行线程进行某种形式的数据共享(但是状态仍然是上下文本地的)。这通常用于一个上下文,即后台加载程序线程,而另一个则进行实际渲染。
像Vulkan这样的较新的API仍然具有上下文,但是失去了线程限制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。