ShaderHelper.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using OpenTK.Graphics.OpenGL;
  2. using System;
  3. namespace Ryujinx.Graphics.OpenGL.Effects
  4. {
  5. internal static class ShaderHelper
  6. {
  7. public static int CompileProgram(string shaderCode, ShaderType shaderType)
  8. {
  9. var shader = GL.CreateShader(shaderType);
  10. GL.ShaderSource(shader, shaderCode);
  11. GL.CompileShader(shader);
  12. var program = GL.CreateProgram();
  13. GL.AttachShader(program, shader);
  14. GL.LinkProgram(program);
  15. GL.DetachShader(program, shader);
  16. GL.DeleteShader(shader);
  17. return program;
  18. }
  19. public static int CompileProgram(string[] shaders, ShaderType shaderType)
  20. {
  21. var shader = GL.CreateShader(shaderType);
  22. GL.ShaderSource(shader, shaders.Length, shaders, (int[])null);
  23. GL.CompileShader(shader);
  24. var program = GL.CreateProgram();
  25. GL.AttachShader(program, shader);
  26. GL.LinkProgram(program);
  27. GL.DetachShader(program, shader);
  28. GL.DeleteShader(shader);
  29. return program;
  30. }
  31. }
  32. }