/// <summary> /// コンストラクタ /// </summary> /// <param name="master">親のマスタデータ</param> /// <param name="body">ネイティブで生成された本体</param> internal ImgTexture(ImgMaster master, IntPtr body) { this.parent = master; this.texBody = body; if (this.texBody != IntPtr.Zero) { this.ID = ImgMaster.ImgObjID++; // Get number of images in texture. var num = ImageLibDllProxy.GetImageNumInTexture(texBody); // NOTE // どのイメージでもミップマップ数は同じ // テクスチャが複数のイメージを持つ場合はキューブマップのときのみで // キューブマップの場合はすべてが同じミップマップ数になる var mipmap = ImageLibDllProxy.GetMipMapNumInTexture(texBody); // ImageImageのキャッシュ用リストを作成 for (uint i = 0; i < num; i++) { var list = new List<ImgImage>(); for (uint m = 0; m < mipmap; m++) { var data = ImageLibDllProxy.GetImageInTexture(texBody, i, m); ImgImage img = new ImgImage(this, data); list.Add(img); } this.imageList.Add(list); } } }
/// <summary> /// 指定されたパスからマスタデータ作成 /// </summary> /// <param name="name">名前</param> /// <param name="path">ファイルパス</param> /// <returns>作成されたマスタデータ</returns> public static ImgMaster CreateImgMaster( string name, string path) { // Read data from path. IntPtr ptr = ImageLibDllProxy.Read(path); if (ptr != IntPtr.Zero) { ImgMaster ret = new ImgMaster(name, path, ptr); return ret; } return null; }