Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        /// <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;
        }