本文整理汇总了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;
}
示例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;
}
}
示例3: switchRaster
public void switchRaster(INyARRgbRaster i_raster)
{
this._ref_buf = (short[])i_raster.getBuffer();
this._ref_size = i_raster.getSize();
}
示例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;
}