gpt4 book ai didi

控制台中的 openGL 上下文

转载 作者:行者123 更新时间:2023-12-01 14:33:35 28 4
gpt4 key购买 nike

我想使用 openGL 的某些功能,但与渲染视觉内容无关。有没有办法在没有任何依赖性的情况下创建它(不是对 Windows,也不是某些包[SDL,SFML,GLUT])?只允许使用没有外部库的库,就像我使用的 GLEW。

最佳答案

您要做的通常称为离屏渲染。从理论上讲,这是完全可能的,但是实际的实现有很多注意事项。对于所有主要的高性能实现,最重要的是:即使没有可见的渲染窗口,您仍然需要图形系统运行并处于事件状态,并且您的程序在该图形系统的环境中运行。

在 Windows 上,最直接的方法是创建不可见窗口,即您使用 CreateWindowEx 创建但不使用 ShowWindow 映射的窗口;你甚至不需要一个事件处理循环。在此窗口中,您像往常一样创建 OpenGL 上下文,但不是渲染到窗口帧缓冲区,而是渲染到帧缓冲区对象。

在 X11/GLX 上甚至更直接:X11/GLX 提供没有扩展的 PBuffers(Windows 也有 PBuffers,但要创建 PBuffers,您首先需要一个常规的 OpenGL 上下文)。所以在 X11 上你可以创建一个没有代理窗口的 PBuffer。 PBuffer 本身可以渲染为离屏缓冲区;如果实现支持,帧缓冲区对象也可以在 PBuffer 中工作。使用带有帧缓冲区对象的不可见窗口,就像在 Windows 中一样,也可以工作。无论哪种方式,对于当前的驱动程序 X11 必须处于事件状态并且绑定(bind)控制台,因此您可以在后台启动额外的 X 服务器并在那里进行离屏渲染,但这只是一个限制驱动程序而不是 X11、GLX 或 OpenGL。

Only libraries allowed are those without external libraries, just like GLEW which I use.

您可以将 GLEW 静态链接到您的程序。如果您是铁杆用户,您可以手动加载扩展程序,但为什么要这样做?

关于控制台中的 openGL 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7541152/

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