我的计算机不支持GPU或OpenGL计算着色器上的OpenCL,所以我想知道从顶点或片段着色器获取数据是否是一个直接的过程?
我的目标是将2个纹理传递到着色器,并使着色器计算机具有另一个纹理存在的位置。哪里有像素匹配。我需要从着色器中检索可能匹配的位置。
这是合理的吗?如果是这样,我该怎么办呢?我有基本的OpenGL知识,我已经设置了一个用颜色绘制多边形的程序。我真的只需要一种从着色器中获取位置值的方法。答案 0 :(得分:2)
您可以渲染到内存而不是屏幕,然后从中获取数据。
glReadPixels
从Framebuffer对象中提取数据。请注意,glReadPixels
与大多数从GPU内存中取回数据到主内存的方法一样,速度很慢,可能不适合实时应用程序。但是,如果您没有这样的功能,例如计算着色器,或者愿意与Pixel Buffer Objects异步进行,那么它是您可以做的最好的。
您可以阅读有关Framebuffers here的更多信息。