我开始学习 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/