OpenGL在没有或有静态设备上下文的情况下加载纹理?

Posted

技术标签:

【中文标题】OpenGL在没有或有静态设备上下文的情况下加载纹理?【英文标题】:OpenGL load texture without or with static device context? 【发布时间】:2015-11-25 16:40:18 【问题描述】:

我想创建 opengl 2d 库,其中纹理和窗口被封装为对象。是否可以创建虚拟静态 DC 并在加载纹理时使其成为当前状态?所有窗口都将具有与静态窗口相同的PIXELFORMATDESCRIPTOR。这样,库的用户就不必在加载纹理或将窗口作为参数传递给纹理之前创建窗口。

【问题讨论】:

【参考方案1】:

是否可以创建虚拟静态 DC 并在加载纹理时使其成为当前状态?

有点。只要设备上下文的视觉格式相互兼容,您就可以将为此视觉格式创建的 OpenGL 渲染上下文绑定到这些设备上下文中的任何一个。

因此,您可以完美地创建一个窗口,其 DC 从未在屏幕上显示(始终保持隐藏,大小为 0×0)并将其用于后台 OpenGL 操作。您还可以创建辅助 OpenGL 上下文,让它与主上下文共享其命名空间,使其在单独的工作线程上的隐藏窗口上成为当前上下文,以便您可以在主上下文时异步执行 OpenGL 操作(如加载纹理)用于其他用途。

【讨论】:

以上是关于OpenGL在没有或有静态设备上下文的情况下加载纹理?的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL:加载纹理会改变当前颜色

OpenGL之Mipmap、压缩纹理

贴图问题,opengl,linux,windows,消除锯齿,摩尔纹,yuv 还是 rgb

在没有加载库的情况下加载 opengl 函数时出错

具有多个设备(监视器)的 OpenGL 上下文

OpenGL VBO球体纹理加载不起作用