本文整理汇总了C#中INyARRgbRaster.getBufferType方法的典型用法代码示例。如果您正苦于以下问题:C# INyARRgbRaster.getBufferType方法的具体用法?C# INyARRgbRaster.getBufferType怎么用?C# INyARRgbRaster.getBufferType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类INyARRgbRaster
的用法示例。
在下文中一共展示了INyARRgbRaster.getBufferType方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: createDriver
/**
* この関数は、i_rasterを操作するピクセルドライバインスタンスを生成します。
* @param i_raster
* @return
* @
*/
public static INyARRgbPixelDriver createDriver(INyARRgbRaster i_raster)
{
INyARRgbPixelDriver ret;
switch (i_raster.getBufferType())
{
case NyARBufferType.BYTE1D_B8G8R8_24:
ret = new NyARRgbPixelDriver_BYTE1D_B8G8R8_24();
break;
case NyARBufferType.BYTE1D_B8G8R8X8_32:
ret = new NyARRgbPixelDriver_BYTE1D_B8G8R8X8_32();
break;
case NyARBufferType.BYTE1D_R8G8B8_24:
ret = new NyARRgbPixelDriver_BYTE1D_R8G8B8_24();
break;
case NyARBufferType.BYTE1D_X8R8G8B8_32:
ret = new NyARRgbPixelDriver_BYTE1D_X8R8G8B8_32();
break;
case NyARBufferType.INT1D_GRAY_8:
ret = new NyARRgbPixelDriver_INT1D_GRAY_8();
break;
case NyARBufferType.INT1D_X8R8G8B8_32:
ret = new NyARRgbPixelDriver_INT1D_X8R8G8B8_32();
break;
case NyARBufferType.BYTE1D_R5G6B5_16BE:
ret = new NyARRgbPixelDriver_WORD1D_R5G6B5_16LE();
break;
default:
throw new NyARException();
}
ret.switchRaster(i_raster);
return ret;
}
示例3: createRgbCubeDriver
/**
* この関数は、(R*G*B>>16) でグレースケール化するフィルタを生成します。
* 最適化されていません。
* @param i_raster
* @return
* @
*/
public static INyARRgb2GsFilterRgbAve createRgbCubeDriver(INyARRgbRaster i_raster)
{
switch (i_raster.getBufferType())
{
default:
return new NyARRgb2GsFilterRgbCube_Any(i_raster);
}
}
示例4: createYCbCrDriver
/**
* この関数は(Yrcb)でグレースケール化するフィルタを生成します。
* 最適化されていません。
* @param i_raster
* @return
* @
*/
public static INyARRgb2GsFilterYCbCr createYCbCrDriver(INyARRgbRaster i_raster)
{
switch (i_raster.getBufferType())
{
default:
return new NyARRgb2GsFilterYCbCr_Any(i_raster);
}
}
示例5: createDriver
public static IRasterDriver createDriver(INyARRgbRaster i_raster)
{
switch (i_raster.getBufferType())
{
case NyARBufferType.INT1D_X8R8G8B8_32:
return new NyARMatchPattDeviationDataDriver_INT1D_X8R8G8B8_32(i_raster);
default:
break;
}
return new NyARMatchPattDeviationDataDriver_RGBAny(i_raster);
}
示例6: createRgbAveDriver
/**
* この関数は、(R*G*B)/3 でグレースケール化するフィルタを生成します。
* 最適化されている形式は以下の通りです。
* <ul>
* <li>{@link NyARBufferType#BYTE1D_B8G8R8X8_32}</li>
* </ul>
* @param i_raster
* @return
* @
*/
public static INyARRgb2GsFilterRgbAve createRgbAveDriver(INyARRgbRaster i_raster)
{
switch (i_raster.getBufferType())
{
case NyARBufferType.BYTE1D_B8G8R8X8_32:
return new NyARRgb2GsFilterRgbAve_BYTE1D_B8G8R8X8_32(i_raster);
case NyARBufferType.BYTE1D_B8G8R8_24:
return new NyARRgb2GsFilterRgbAve_BYTE1D_C8C8C8_24(i_raster);
case NyARBufferType.BYTE1D_X8R8G8B8_32:
return new NyARRgb2GsFilterRgbAve_INT1D_X8R8G8B8_32(i_raster);
default:
return new NyARRgb2GsFilterRgbAve_Any(i_raster);
}
}
示例7: createDriver
/**
* 指定したIN/OUTに最適な{@link INyARPerspectiveReaader}を生成します。
* <p>入力ラスタについて
* 基本的には全ての{@link INyARRgbRaster}を実装したクラスを処理できますが、次の3種類のバッファを持つものを推奨します。
* <ul>
* <li>{@link NyARBufferType#BYTE1D_B8G8R8X8_32}
* <li>{@link NyARBufferType#BYTE1D_B8G8R8_24}
* <li>{@link NyARBufferType#BYTE1D_R8G8B8_24}
* </ul>
* </p>
* <p>出力ラスタについて
* 基本的には全ての{@link NyARBufferType#INT1D_X8R8G8B8_32}形式のバッファを持つラスタを使用してください。
* 他の形式でも動作しますが、低速な場合があります。
* </p>
* <p>高速化について -
* 入力ラスタ形式が、{@link NyARBufferType#BYTE1D_B8G8R8X8_32},{@link NyARBufferType#BYTE1D_B8G8R8_24}
* ,{@link NyARBufferType#BYTE1D_R8G8B8_24}のものについては、他の形式よりも高速に動作します。
* また、出力ラスタ形式が、{@link NyARBufferType#INT1D_X8R8G8B8_32}の物については、単体サンプリングモードの時のみ、さらに高速に動作します。
* 他の形式のラスタでは、以上のものよりも低速転送で対応します。
* @param i_in_raster_type
* 入力ラスタの形式です。
* @param i_out_raster_type
* 出力ラスタの形式です。
* @return
*/
public static INyARPerspectiveCopy createDriver(INyARRgbRaster i_raster)
{
//新しいモードに対応したら書いてね。
switch (i_raster.getBufferType())
{
case NyARBufferType.BYTE1D_B8G8R8X8_32:
return new PerspectiveCopy_BYTE1D_B8G8R8X8_32(i_raster);
case NyARBufferType.BYTE1D_B8G8R8_24:
return new PerspectiveCopy_BYTE1D_B8G8R8_24(i_raster);
case NyARBufferType.BYTE1D_R8G8B8_24:
return new PerspectiveCopy_BYTE1D_R8G8B8_24(i_raster);
default:
return new PerspectiveCopy_ANYRgb(i_raster);
}
}
示例8: createDriver
public static INyARRgb2GsFilterArtkTh createDriver(INyARRgbRaster i_raster)
{
switch (i_raster.getBufferType())
{
case NyARBufferType.BYTE1D_B8G8R8_24:
case NyARBufferType.BYTE1D_R8G8B8_24:
return new NyARRgb2GsFilterArtkTh_BYTE1D_C8C8C8_24(i_raster);
case NyARBufferType.BYTE1D_B8G8R8X8_32:
return new NyARRgb2GsFilterArtkTh_BYTE1D_B8G8R8X8_32(i_raster);
case NyARBufferType.BYTE1D_X8R8G8B8_32:
return new NyARRgb2GsFilterArtkTh_BYTE1D_X8R8G8B8_32(i_raster);
case NyARBufferType.INT1D_X8R8G8B8_32:
return new NyARRgb2GsFilterArtkTh_INT1D_X8R8G8B8_32(i_raster);
case NyARBufferType.WORD1D_R5G6B5_16LE:
return new NyARRgb2GsFilterArtkTh_WORD1D_R5G6B5_16LE(i_raster);
default:
return new NyARRgb2GsFilterArtkTh_Any(i_raster);
}
}
示例9: 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;
}
}
示例10: 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;
}