Xna 寻找阵列中的最小像素

Xna 寻找阵列中的最小像素,xna,shader,hlsl,Xna,Shader,Hlsl,我试图在XNA中将任意的纹理X乘X减少到2乘X。 我尝试运行以下代码: int x; int y; float2 minim={1,1}; float2 current; if(coords.x==0) { for(x=0;x<=range/2;x=x+1) { coords.x=x; current=tex2D(input,coords); minim=min(minim,current); } } i

我试图在XNA中将任意的纹理X乘X减少到2乘X。 我尝试运行以下代码:

int x;
int y;
float2 minim={1,1};
float2 current;
if(coords.x==0)
{
    for(x=0;x<=range/2;x=x+1)
    {
        coords.x=x;
        current=tex2D(input,coords);
        minim=min(minim,current);       
    }
}
if(coords.x==1)
{
    for(x=range/2;x<=range;x++)
    {
        coords.x=x;
        current=tex2D(input,coords);
        minim=min(minim,current);       
    }
}
return float4(minim,0,1);
我在尝试编译时遇到了各种各样的问题,比如无法展开循环,不能在带break的循环中使用渐变

第一个问题:通过在单个着色器过程中尝试计算,我走的是正确的道路,还是应该通过在渲染目标之间切换日期,以较小的步骤来减少

第二个问题:如果这个想法是正确的,那么我的代码有什么问题?

第二个问题:无论你想用这个着色器做什么。。。编译器说它无法展开循环,因为它在编译时不知道“range”的值。可能您的着色器模型版本要求具有编译时常量迭代计数,例如,不允许在“for”条件下具有动态变量


第一个问题:你当然可以在一个过程中完成你用文字提出的问题,但是着色器块太离题了,以至于我无法回答问题1

您是否探索过除使用着色器之外的其他选项来实现此目的

不经意间:

1绘制此纹理时,为源矩形指定宽度为2,高度为X,因此仅绘制2×X,而不是X×X

2利用GetData和SetData提取您希望使用的纹理的2 X部分。

基本上,您没有走上正确的轨道。你能更详细地解释一下你想要达到的目标吗?也许可以问一个新问题?