我在OpenCL中使用OpenGL互操作编写了一个小型raycaster,并且表现不佳。不是计算的原因,而是对write_imagef
的调用。当绘制到OpenGL纹理时,程序以大约66fps运行,而没有大约2900fps。这有什么原因吗?我正在使用最新的NVIDIA驱动程序,我怀疑它是关于我的卡,因为它是一个相当不错的(GTX 750TI)。我打电话给方法两次(我知道,第一次实际上没有必要)一次清除屏幕:
write_imagef(screen, coords, colours[0]/*white*/);
和一次绘制渲染像素(如果有任何物体与之相交)
write_imagef(screen, coords, colour)
对该功能的第一次调用将fps降低到2800左右,第二次调用单独降低到66fps,两者合并仍然导致66fps。 我确实没有关于为什么会发生这种情况的想法。