对于绘制到视频内存中,您可以使用帧缓冲对象绘制到OpenGL纹理或渲染缓冲区(用于屏幕外渲染的VRAM区域),如Stefan建议的那样.
当涉及到由另一个库创建的VRAM缓冲区时,它取决于您正在谈论的库.如果这个库也在底层使用OpenGL,你需要深入了解库以获得"缓冲区"(可以是一个纹理,你可以使用FBO直接渲染到它,或者一个GL缓冲对象,你可以读取它使用PBO的像素数据.
如果这个库使用其他API来连接GPU,那么可能性不大.如果它使用OpenCL或CUDA,这些API具有直接使用其内存缓冲区或图像作为OpenGL缓冲区或纹理的功能,您可以使用上述技术将其渲染到其中.
如果这个库在引擎盖下使用Direct3D,则会变得更加困难.但至少nVidia有一个扩展,直接使用Direct3D 9表面和纹理作为OpenGL缓冲区和纹理,但我没有任何经验,我也不知道这是否得到广泛支持.
| 归档时间: |
|
| 查看次数: |
2236 次 |
| 最近记录: |