コード例 #1
0
ファイル: ManagedImage.cs プロジェクト: zyjiang0571/open3mod
        private MipMapChain CreateMipMapChain(ImageID imageID, int imageNum, int faceNum)
        {
            IL.BindImage(imageID);
            if (!IL.ActiveImage(imageNum))
            {
                return(null);
            }
            if (!IL.ActiveFace(faceNum))
            {
                return(null);
            }

            //Get total number of mipmaps (including base face)
            int         mipMapCount = IL.ilGetInteger(ILDefines.IL_NUM_MIPMAPS) + 1;
            MipMapChain mipMapChain = new MipMapChain();

            //Get the first mipmap and every other, when we hit a null, we break
            for (int i = 0; i < mipMapCount; i++)
            {
                ImageData data = ImageData.Load(new Subimage(imageID, imageNum, faceNum, 0, i));
                if (data == null)
                {
                    break;
                }
                mipMapChain.Add(data);
            }
            mipMapChain.TrimExcess();
            return(mipMapChain);
        }
コード例 #2
0
        public bool Activate()
        {
            if (m_rootImage <= 0)
            {
                return(false);
            }

            IL.BindImage(m_rootImage);

            //Don't bother to activate if any subimages are zero, as it corresponds to the root image

            if (m_imageIndex > 0 && !IL.ActiveImage(m_imageIndex))
            {
                return(false);
            }

            if (m_faceIndex > 0 && !IL.ActiveFace(m_faceIndex))
            {
                return(false);
            }

            if (m_layerIndex > 0 && !IL.ActiveLayer(m_layerIndex))
            {
                return(false);
            }

            if (m_mipMapIndex > 0 && !IL.ActiveMipMap(m_mipMapIndex))
            {
                return(false);
            }

            return(true);
        }
コード例 #3
0
        private MipMapChain CreateMipMapChain(ImageID imageID, int imageNum, int faceNum)
        {
            IL.BindImage(imageID);
            if (!IL.ActiveImage(imageNum))
            {
                return((MipMapChain)null);
            }
            if (!IL.ActiveFace(faceNum))
            {
                return((MipMapChain)null);
            }
            int         num         = IL.ilGetInteger(3570U) + 1;
            MipMapChain mipMapChain = new MipMapChain();

            for (int mipMapIndex = 0; mipMapIndex < num; ++mipMapIndex)
            {
                ImageData imageData = ImageData.Load(new Subimage(imageID, imageNum, faceNum, 0, mipMapIndex));
                if (imageData != null)
                {
                    mipMapChain.Add(imageData);
                }
                else
                {
                    break;
                }
            }
            mipMapChain.TrimExcess();
            return(mipMapChain);
        }
コード例 #4
0
        public ImageData GetImageData(CubeMapFace cubeMapFace, int mipmapIndex)
        {
            if (!this.IsValid || mipmapIndex < 0)
            {
                return((ImageData)null);
            }
            int faceCount = this.FaceCount;

            for (int index = 0; index < faceCount; ++index)
            {
                this.Bind();
                IL.ActiveFace(index);
                if ((CubeMapFace)IL.ilGetInteger(3581U) == cubeMapFace)
                {
                    return(ImageData.Load(new Subimage(this.m_id, 0, index, 0, mipmapIndex)));
                }
            }
            return((ImageData)null);
        }
コード例 #5
0
        public ImageData GetImageData(CubeMapFace cubeMapFace, int mipmapIndex)
        {
            if (!IsValid || mipmapIndex < 0)
            {
                return(null);
            }

            int faceCount = FaceCount;

            for (int i = 0; i < faceCount; i++)
            {
                Bind();
                IL.ActiveFace(i);
                CubeMapFace face = (CubeMapFace)IL.ilGetInteger(ILDefines.IL_IMAGE_CUBEFLAGS);

                if (face == cubeMapFace)
                {
                    return(ImageData.Load(new Subimage(m_id, 0, i, 0, mipmapIndex)));
                }
            }

            return(null);
        }
コード例 #6
0
 public bool Activate()
 {
     if ((int)this.m_rootImage <= 0)
     {
         return(false);
     }
     IL.BindImage(this.m_rootImage);
     return((this.m_imageIndex <= 0 || IL.ActiveImage(this.m_imageIndex)) && (this.m_faceIndex <= 0 || IL.ActiveFace(this.m_faceIndex)) && ((this.m_layerIndex <= 0 || IL.ActiveLayer(this.m_layerIndex)) && (this.m_mipMapIndex <= 0 || IL.ActiveMipMap(this.m_mipMapIndex))));
 }