Parallel processing 用openCL内核替换计算着色器,o/p是像素化的&;闪烁,但o/p缓冲区中的值匹配

Parallel processing 用openCL内核替换计算着色器,o/p是像素化的&;闪烁,但o/p缓冲区中的值匹配,parallel-processing,opencl,shader,directx-11,compute-shader,Parallel Processing,Opencl,Shader,Directx 11,Compute Shader,我有一个应用程序,其中有不同的着色器,其中一个是计算着色器,它计算场景中的灯光值,灯光值是通过在计算着色器中编写的累积函数计算的 我已经编写了一个内核openCL(.cl),类似于计算着色器的(.hlsl)文件 我用openCL内核替换了计算着色器 输出光缓冲区中的值与计算着色器输出的值相同 但输出看起来是像素化的,它在屏幕上闪烁,并且像素化输出的一小部分的方形框匹配我内核的工作组大小 由于输出光缓冲区(我很确定这是唯一的一个输出缓冲区)的值与compute shader的值相同,所以我无法找出

我有一个应用程序,其中有不同的着色器,其中一个是计算着色器,它计算场景中的灯光值,灯光值是通过在计算着色器中编写的累积函数计算的

我已经编写了一个内核openCL(.cl),类似于计算着色器的(.hlsl)文件

我用openCL内核替换了计算着色器

输出光缓冲区中的值与计算着色器输出的值相同

但输出看起来是像素化的,它在屏幕上闪烁,并且像素化输出的一小部分的方形框匹配我内核的工作组大小

由于输出光缓冲区(我很确定这是唯一的一个输出缓冲区)的值与compute shader的值相同,所以我无法找出我的程序失败的地方


以前有人遇到过类似的问题吗?任何提示或建议都会有帮助。

您的输出是否为GL纹理?如何同步CL和GL?它的DirectX3d 11和CL,我为每个DXUT循环调用内核的renderoutput缓冲区是D3DDo中的结构化缓冲区,在ClenqueureReleased3D之后调用clFinish…?因为我在使用D3D 11,我没有使用ClenqueureReleased3D,我在创建暂存缓冲区,将资源从着色器图形管道限制缓冲区复制到暂存缓冲区,映射这些缓冲区,并从其映射数据的指针创建cl缓冲区,并将它们作为cl_mem传递到内核,在释放传递到cl内核的任何参数的内存之前,我调用cl_finish。