我开始学习 OpenGL,我想知道是否可以让它在我通过其他库获得的视频内存缓冲区上绘制?
要绘制到视频内存中,您可以使用帧缓冲对象 http://www.songho.ca/opengl/gl_fbo.html绘制到 OpenGL 纹理或渲染缓冲区(用于离屏渲染的 VRAM 区域),就像 Stefan 建议的那样。
当涉及到由另一个库创建的 VRAM 缓冲区时,这取决于您正在谈论的库。如果这个库也在底层使用了 OpenGL,那么您需要深入了解该库才能获取该“缓冲区”(无论是纹理,您可以使用 FBO 直接渲染到其中,还是 GL 缓冲区对象,您可以在其中读取渲染的内容)像素数据使用PBOs http://www.songho.ca/opengl/gl_pbo.html.
如果这个库使用其他一些 API 来连接 GPU,则可能性就不那么大了。如果使用 OpenCL 或 CUDA,这些 API 具有直接使用其内存缓冲区或图像作为 OpenGL 缓冲区或纹理的功能,然后您可以使用上述技术进行渲染。
如果这个库在底层使用 Direct3D,它会变得有点困难。但至少 nVidia 有一个扩大 http://www.opengl.org/registry/specs/NV/DX_interop.txt直接使用 Direct3D 9 表面和纹理作为 OpenGL 缓冲区和纹理,但我对此没有任何经验,也不知道这是否得到广泛支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)