/*---------------------------------------------------------------------------

    NN Draw object header for DXG20

    Copyright (C) 2002 - 2004 SEGA Corporation Creative Center Graphics Sect.
    All Rights Reserved.

    Module  : NN Draw object header for DXG20
    File    : nnldrawobjxe.h
    Create  : 2003/10/01
    Modify  : 2003/10/24 新仕様に合わせた修正
    Modify  : 2003/11/04 ちょっと手直し
    Modify  : 2003/11/21 NND_SHADEROPT_FOGENABLE フラグの追加
    Modify  : 2003/12/17 モーフ対応の為の定数、関数追加
    Modify  : 2004/02/25 ドロータイプの追加
    Modify  : 2004/03/16 NNS_OBJECT_FLAG_DX構造体変更
    Modify  : 2004/04/21 共通頂点関数を追加
    Modify  : 2004/04/26 *XBの関数名をDXに変更
    Modify  : 2004/06/04 nnSetMultiCommonVertexBufferDX、nnCalcMultiPliableCommonVerticesDX関数追加
    Modify  : 2004/06/16 DX8,DX9版統合
    Modify  : 2004/07/20 関数名変更
    Modify  : 2004/08/05 NND_PLATFORM_XENON追加
    Modify  : 2004/10/07 #include <nnleffect.h>の追加
    Modify  : 2004/12/17 バッファ関係の関数の追加、削除
    Modify  : 2005/01/04 NND_VTXOBJ_CALC_CPU_PLIABLE_VERTICES追加
    Modify  : 2005/01/31 Xbox版統合
    Modify  : 2008/10/31 nnCalcVertexBufferObjectSizeDXG20 を追加
    Modify  : 2009/05/12 ヘッダ整理
	Version : 1.18.22
    Note    :

---------------------------------------------------------------------------*/
#ifndef __NNLDRAWOBJDXG20_H__
#define __NNLDRAWOBJDXG20_H__

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


//バーテックスバッファの設定
void nnInitVertexBufferDXG20( void *pVB, Uint32 Size);
void nnExitVertexBufferDXG20(void);


typedef Uint32 NNF_VTXOBJ;
#define NND_VTXOBJ_EXCLUDE_PLIABLE_VERTICES		(1 << 0)
#define NND_VTXOBJ_EXCLUDE_DATA_RIGID_VERTICES	(1 << 1)
#define NND_VTXOBJ_CALC_CPU_PLIABLE_VERTICES	(1 << 16) /* 2008.07.15(使用禁止) */


//オブジェクト単位のバーテックスバッファの設定
Uint32 nnCalcVertexBufferObjectSizeDXG20(const NNS_OBJECT *obj, NNF_VTXOBJ flag);
Uint32 nnVertexBufferObjectDXG20(NNS_OBJECT *dstobj, const NNS_OBJECT *srcobj, NNF_VTXOBJ flag);
void nnDeleteVertexObjectDXG20(NNS_OBJECT *obj);

//プライアブルCPU計算
Uint32 nnCalcMultiPliableObjectBufferSize( const NNS_OBJECT *obj, NNF_CALCPLIABLE flag, Sint32 num);
Uint32 nnInitMultiPliableObject( NNS_PLIABLEOBJ **pobjlist, const NNS_OBJECT *obj, NNF_CALCPLIABLE flag, void *pbuf, Sint32 num);
void nnCalcMultiPliableObject( NNS_PLIABLEOBJ **pobjlist, const NNS_MATRIX **mtxpalptrlist, NNF_CALCPLIABLE flag, Sint32 num);
void nnExitMultiPliableObject( NNS_PLIABLEOBJ **pobjlist, Sint32 num );


#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __NNLDRAWOBJDXG20_H__ */

/* End of file */
