コード例 #1
0
        public bool Init(Stream stream, ShaderEffectSamplerAnisotropy anisotropyOverride)
        {
            // read shader effect desc
            var desc = new ShaderEffectDesc();            // TODO: read/create ShaderEffectDesc.

            if (anisotropyOverride != ShaderEffectSamplerAnisotropy.Default && desc.samplers != null)
            {
                for (int i = 0; i != desc.samplers.Length; ++i)
                {
                    desc.samplers[i].anisotropy = anisotropyOverride;
                }
            }

            // read shaders
            var reader      = new StreamBinaryReader(stream);
            int shaderCount = stream.ReadByte();

            for (int i = 0; i != shaderCount; ++i)
            {
                // read shader type
                var type = (ShaderType)stream.ReadByte();

                // read shader data
                int shaderSize = reader.ReadInt32();
                var shaderData = new byte[shaderSize];
                int read       = stream.Read(shaderData, 0, shaderSize);
                if (read < shaderSize)
                {
                    throw new Exception("End of file reached");
                }

                // create shader
                if (!CreateShader(shaderData, type))
                {
                    return(false);
                }
            }

            return(InitFinish(ref desc));
        }
コード例 #2
0
 public abstract ShaderEffectBase CreateShaderEffect(ShaderBase vs, ShaderBase ps, ShaderBase hs, ShaderBase ds, ShaderBase gs, ShaderEffectDesc desc, bool disposeShaders);
コード例 #3
0
 protected abstract bool InitFinish(ref ShaderEffectDesc desc);