本帖最后由 qwc198712 于 2011-05-03 12:58:59 编辑

解决方案 »

  1.   

    512*512*365=95682560 
    90M的东西不用纹理是不可能的,ConstantBuffer没有这么大( sizeof(bool) 是 1 字节,不是 1 位 )
      

  2.   

    又想马儿跑的快又想马儿不吃草可能吗?你要想精确到位控制那只能在 CPU 进行位编码到 GPU 那边解码,这关键看你程序的瓶颈在哪,如果是处理性能不够的话那干脆就算了吧,如果是总线带宽影响你的程序那就尝试一下做 bool 到 bit 的压缩操作
      

  3.   

    不过话说回来了 1byte=8bit
    照你的说法源数据是 90M+ 即使除了 8 也得 1xM ,那 Constant Buffer 也放不下啊
      

  4.   

    这么庞大的数据量不用纹理是没办法既能传给GPU又能交给shader处理的,但目前貌似没有合适的纹理格式能容纳你的三维数据,而且即使能用纹理,也没办法精确读取纹理像素的值,因为采样器通过插值采样纹理,返回给你的数据通常是中间值,不是你希望的,而且UV值都是浮点,不可能像数组下标一样精确定位哪一个数据。这种设计绝对有问题,想想其它办法吧。
      

  5.   

    我是想对一个512*512*365大小的三维纹理进行操作,因此想引人这个bool数组来控制这个三维纹理的某一点是否显示。。可能我的想法非常业余。
      

  6.   

    反正一句话 Constant Buffer 是不可能放的下的
    Constant Buffer 在 Shader Mode 4.0 以后才只有 64K 字节这么大, SM4 以前的就更小了