Beispiel #1
0
 public Texture2D(FileExisting file)
 {
     Type       = TextureType.FromFile;
     UseMipMaps = true;
     this.file  = file;
     file.OnFileChanged(() =>
     {
         VersionInFile++;
     });
 }
Beispiel #2
0
        void Load()
        {
            ShaderProgramHandle = GL.CreateProgram(); MyGL.Check();

            var builder = new ShaderBuilder(file.FileSystem);
            var success = true;

            builder.LoadAndParse(file);

            if (builder.buildResults.Count == 0)
            {
                Log.Error("no shader parts were found, possible part markers are: " + Enum.GetNames(typeof(ShaderType)).Select(s => "[" + s + "]").Join(" "));
            }

            foreach (var r in builder.buildResults)
            {
                success &= AttachShader(builder, r.shaderContents, r.shaderType, r.filePath);
            }

            FinalizeInit();

            if (success)
            {
                Log.Info(typeof(Shader) + " " + file + " loaded successfully");
                LoadState    = State.LoadedSuccess;
                VersionOnGpu = VersionInFile;
            }
            else
            {
                LoadState = State.LoadedError;
                Log.Error("fix the error then press any key to reload ...");
                Console.ReadKey();
                Log.Error("reloading ...");
                Load();
                return;
            }

            file.OnFileChanged(NotifyFileChanged);
            builder.includedFiles.ForEach(f => f.OnFileChanged(NotifyFileChanged));

            Uniforms.MarkAllUniformsAsChanged();
            cachedUniformLocations.Clear();
        }