当前位置: 首页>>代码示例>>C#>>正文


C# INyARRgbRaster.getBuffer方法代码示例

本文整理汇总了C#中INyARRgbRaster.getBuffer方法的典型用法代码示例。如果您正苦于以下问题:C# INyARRgbRaster.getBuffer方法的具体用法?C# INyARRgbRaster.getBuffer怎么用?C# INyARRgbRaster.getBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在INyARRgbRaster的用法示例。


在下文中一共展示了INyARRgbRaster.getBuffer方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: doFilter

        public void doFilter(INyARRgbRaster i_input, NyARBinRaster i_output)
        {
            //INyARBufferReader in_buffer_reader = i_input.getBufferReader();
            //INyARBufferReader out_buffer_reader = i_output.getBufferReader();
            int in_buf_type = i_input.getBufferType();

            NyARIntSize size = i_output.getSize();
            Debug.Assert(i_output.isEqualBufferType(NyARBufferType.INT2D_BIN_8));
            Debug.Assert(checkInputType(in_buf_type) == true);
            Debug.Assert(i_input.getSize().isEqualSize(size.w * 2, size.h * 2) == true);

            int[][] out_buf = (int[][])i_output.getBuffer();


            switch (i_input.getBufferType())
            {
                case NyARBufferType.BYTE1D_B8G8R8_24:
                case NyARBufferType.BYTE1D_R8G8B8_24:
                    convert24BitRgb((byte[])i_input.getBuffer(), out_buf, size);
                    break;
                case NyARBufferType.BYTE1D_B8G8R8X8_32:
                    convert32BitRgbx((byte[])i_input.getBuffer(), out_buf, size);
                    break;
                case NyARBufferType.WORD1D_R5G6B5_16LE:
                    convert16BitRgb565word((short[])i_input.getBuffer(), out_buf, size);
                    break;
                default:
                    throw new NyARException();
            }
            return;
        }
开发者ID:whztt07,项目名称:NyARToolkitCS,代码行数:31,代码来源:NyARRasterFilter_ARTTh_Quad.cs

示例2: setRaster

 /* DsXRGB32Rasterの内容を保持しているサーフェイスにコピーします。
  */
 public void setRaster(INyARRgbRaster i_sample)
 {
     Debug.Assert(!this._is_dispose);
     int pitch;
     int s_stride = this.m_width * 4;
     using (GraphicsStream gs = this._surface.LockRectangle(LockFlags.None, out pitch))
     {
         try{                    
             switch (i_sample.getBufferType())
             {
                 case NyARBufferType.BYTE1D_B8G8R8X8_32:
                     if (pitch % s_stride == 0)
                     {
                         Marshal.Copy((byte[])i_sample.getBuffer(), 0, (IntPtr)((int)gs.InternalData), this.m_width * 4 * this.m_height);
                     }
                     else
                     {
                         int s_idx = 0;
                         int d_idx = (int)gs.InternalData;
                         for (int i = this.m_height - 1; i >= 0; i--)
                         {
                             //どう考えてもポインタです。
                             Marshal.Copy((byte[])i_sample.getBuffer(), s_idx, (IntPtr)(d_idx), s_stride);
                             s_idx += s_stride;
                             d_idx += pitch;
                         }
                     }
                     break;
                 case NyARBufferType.OBJECT_CS_Bitmap:
                     NyARBitmapRaster ra = (NyARBitmapRaster)(i_sample);
                     BitmapData bm = ra.lockBitmap();
                     try{
                         //コピー
                         int src = (int)bm.Scan0;
                         int dst = (int)gs.InternalData;
                         for (int r = this.m_height - 1; r >= 0; r--)
                         {
                             NyARD3dUtil.RtlCopyMemory((IntPtr)dst, (IntPtr)src, s_stride);
                             dst += pitch;
                             src += bm.Stride;
                         }
                     }finally{
                         ra.unlockBitmap();
                     }
                     break;
                 default:
                     throw new NyARException();
             }
         }finally{
             this._surface.UnlockRectangle();
         }
         return;
     }
 }
开发者ID:whztt07,项目名称:NyARToolkitCS,代码行数:56,代码来源:NyARD3dSurface.cs

示例3: switchRaster

 public void switchRaster(INyARRgbRaster i_raster)
 {
     this._ref_buf = (short[])i_raster.getBuffer();
     this._ref_size = i_raster.getSize();
 }
开发者ID:ooHIROoo,项目名称:Imagine2016,代码行数:5,代码来源:NyARRgbPixelDriverFactory.cs

示例4: setRaster

 /* DsXRGB32Rasterの内容を保持しているテクスチャにコピーします。
  * i_rasterのサイズは、このインスタンスに指定したテクスチャサイズ(コンストラクタ等に指定したサイズ)と同じである必要です。
  * ラスタデータはテクスチャの左上を基点にwidth x heightだけコピーされ、残りの部分は更新されません。
  */
 public void setRaster(INyARRgbRaster i_raster)
 {
     Debug.Assert(!this._is_dispose);
     int pitch;
     using(GraphicsStream texture_rect = this.m_texture.LockRectangle(0, LockFlags.None, out pitch))
     {
         try{
             int dst = (int)texture_rect.InternalData;
             switch (i_raster.getBufferType())
             {
                 case NyARBufferType.BYTE1D_B8G8R8X8_32:
                     {
                         byte[] buf = (byte[])i_raster.getBuffer();
                         //テクスチャのピッチって何?
                         int src_w = this.m_width * 4;
                         int src = 0;
                         for (int r = this.m_height - 1; r >= 0; r--)
                         {
                             Marshal.Copy(buf, src, (IntPtr)dst, pitch);
                             dst += pitch;
                             src += src_w;
                         }
                     }
                     break;
                 case NyARBufferType.OBJECT_CS_Bitmap:
                     NyARBitmapRaster ra = (NyARBitmapRaster)(i_raster);
                     BitmapData bm = ra.lockBitmap(); 
                     try
                     {
                         int src = (int)bm.Scan0;
                         for (int r = this.m_height - 1; r >= 0; r--)
                         {
                             NyARD3dUtil.RtlCopyMemory((IntPtr)dst, (IntPtr)src, pitch);
                             dst += pitch;
                             src += bm.Stride;
                         }
                     }
                     finally
                     {
                         ra.unlockBitmap();
                     }
                     break;
                 default:
                     throw new NyARException();
             }
         }
         finally
         {
             //テクスチャをアンロックする
             this.m_texture.UnlockRectangle(0);
         }
     }
     return;
 }
开发者ID:whztt07,项目名称:NyARToolkitCS,代码行数:58,代码来源:NyARD3dTexture.cs


注:本文中的INyARRgbRaster.getBuffer方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。