opengl - 是否可以在内存表面上绘制 OpenGL?

标签 opengl

我开始学习 OpenGL,我想知道是否可以在我通过其他库获得的视频内存缓冲区上绘制它?

最佳答案

要绘制到视频内存中,您可以使用 framebuffer objects绘制到 OpenGL 纹理或渲染缓冲区(用于离屏渲染的 VRAM 区域),就像 Stefan 建议的那样。

当涉及到由另一个库创建的 VRAM 缓冲区时,这取决于您所谈论的库。如果这个库也在幕后使用 OpenGL,您需要深入了解该库以获取该“缓冲区”(无论是纹理,您可以使用 FBO 直接渲染到其中,或者是 GL 缓冲区对象,您可以在其中读取渲染使用 PBOs 的像素数据。

如果这个库使用其他一些 API 来连接 GPU,那么可能性就不大了。如果它使用 OpenCL 或 CUDA,这些 API 具有直接使用其内存缓冲区或图像作为 OpenGL 缓冲区或纹理的功能,然后您可以使用上述技术将其渲染。

如果这个库在幕后使用 Direct3D,它会变得有点困难。但至少 nVidia 有一个 extension直接使用 Direct3D 9 表面和纹理作为 OpenGL 缓冲区和纹理,但我对此没有任何经验,我也不知道这是否得到广泛支持。

关于opengl - 是否可以在内存表面上绘制 OpenGL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7548556/

相关文章:

java - SWING 有时比 openGL 更快

c++ - 相机跟随播放器opengl

C++ 项目在glewinit()之后崩溃

java - JOGL 2.0 不支持 GLCanvas ,Texture ,Animator ,但是 jogl 1.0 呢?

c++ - 如何使用 GLM 在鸟瞰图中设置相机?

math - Glsl mod 与 Hlsl fmod

c++ - 如何将 OpenGL 库链接到 NetBeans 7.1 中的项目

c++ - 颜色类型 3 的 PNG 图像纹理格式

c++ - opengl中对象的旋转

opengl - 你如何在 OpenGL 中进行非线性着色?