Beispiel #1
0
        public override void load(Stream stream)
        {
            aBinaryReader reader = new aBinaryReader(stream, Endianness.Big);

            mFormat       = (gxTextureFormat)reader.Read8(); // 0000
            mTransparency = reader.Read8();                  // 0001
            mWidth        = reader.Read16();                 // 0002
            mHeight       = reader.Read16();                 // 0004
            mWrapS        = (gxWrapMode)reader.Read8();      // 0006
            mWrapT        = (gxWrapMode)reader.Read8();      // 0007
            reader.Step(1);                                  // 0008 (0001)
            mTlutFormat = (gxTlutFormat)reader.Read8();      // 0009
            int  tlutentrycount = reader.Read16();           // 000A
            long tlutoffset     = reader.Read32();           // 000C

            mMipMap     = (reader.Read8() != 0);             // 0010
            mEdgeLOD    = (reader.Read8() != 0);             // 0011
            mBiasClamp  = (reader.Read8() != 0);             // 0012
            mMaxAniso   = (gxAnisotropy)reader.Read8();      // 0013
            mMinFilter  = (gxTextureFilter)reader.Read8();   // 0014
            mMagFilter  = (gxTextureFilter)reader.Read8();   // 0015
            mMinLod     = reader.ReadS8();                   // 0016
            mMaxLod     = reader.ReadS8();                   // 0017
            mImageCount = reader.Read8();                    // 0018 (0001)
            mLodBias    = reader.ReadS16();                  // 001A
            long texoffset = reader.Read32();                // 001C

            loadImageData(reader, texoffset);
            if (tlutentrycount > 0)
            {
                loadPaletteData(reader, tlutentrycount, tlutoffset);
            }
        }
Beispiel #2
0
        static TextureMagFilter convertMagFilter(gxTextureFilter magFilter)
        {
            switch (magFilter)
            {
            case gxTextureFilter.Near: return(TextureMagFilter.Nearest);

            case gxTextureFilter.Linear: return(TextureMagFilter.Linear);
            }
            throw new ArgumentOutOfRangeException("magFilter", "Invalid magnification filter.");
        }
Beispiel #3
0
 public static void initTexObjLOD(int textureName, gxTextureFilter minFilter, gxTextureFilter magFilter, double minLod, double maxLod, double lodBias, bool biasClamp, bool doEdgeLod, gxAnisotropy maxAniso)
 {
     GL.BindTexture(TextureTarget.Texture2D, textureName);
     GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureLodBias, (float)lodBias);
     GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)convertMinFilter(minFilter));
     GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)convertMagFilter(magFilter));
     GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinLod, (float)bloMath.clamp(minLod, 0.0d, 10.0d));
     GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMaxLod, (float)bloMath.clamp(maxLod, 0.0d, 10.0d));
     GL.TexParameter(TextureTarget.Texture2D, (TextureParameterName)ExtTextureFilterAnisotropic.TextureMaxAnisotropyExt, convertAnisotropy(maxAniso));
 }
Beispiel #4
0
        static TextureMinFilter convertMinFilter(gxTextureFilter minFilter)
        {
            switch (minFilter)
            {
            case gxTextureFilter.Near: return(TextureMinFilter.Nearest);

            case gxTextureFilter.Linear: return(TextureMinFilter.Linear);

            case gxTextureFilter.NearMipNear: return(TextureMinFilter.NearestMipmapNearest);

            case gxTextureFilter.LinearMipNear: return(TextureMinFilter.LinearMipmapNearest);

            case gxTextureFilter.NearMipLinear: return(TextureMinFilter.NearestMipmapLinear);

            case gxTextureFilter.LinearMipLinear: return(TextureMinFilter.LinearMipmapLinear);
            }
            throw new ArgumentOutOfRangeException("minFilter", "Invalid minification filter.");
        }