public Texture2D(FileExisting file) { Type = TextureType.FromFile; UseMipMaps = true; this.file = file; file.OnFileChanged(() => { VersionInFile++; }); }
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(); }