ShaderProgram.lua 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. require "Polycode/Resource"
  2. class "ShaderProgram" (Resource)
  3. ShaderProgram.TYPE_VERT = 0
  4. ShaderProgram.TYPE_FRAG = 1
  5. function ShaderProgram:__getvar(name)
  6. if name == "type" then
  7. return Polycode.ShaderProgram_get_type(self.__ptr)
  8. end
  9. if Resource["__getvar"] ~= nil then
  10. return Resource.__getvar(self, name)
  11. end
  12. end
  13. function ShaderProgram:__setvar(name,value)
  14. if name == "type" then
  15. Polycode.ShaderProgram_set_type(self.__ptr, value)
  16. return true
  17. end
  18. if Resource["__setvar"] ~= nil then
  19. return Resource.__setvar(self, name, value)
  20. else
  21. return false
  22. end
  23. end
  24. function ShaderProgram:ShaderProgram(...)
  25. local arg = {...}
  26. if type(arg[1]) == "table" and count(arg) == 1 then
  27. if ""..arg[1].__classname == "Resource" then
  28. self.__ptr = arg[1].__ptr
  29. return
  30. end
  31. end
  32. for k,v in pairs(arg) do
  33. if type(v) == "table" then
  34. if v.__ptr ~= nil then
  35. arg[k] = v.__ptr
  36. end
  37. end
  38. end
  39. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  40. self.__ptr = Polycode.ShaderProgram(unpack(arg))
  41. end
  42. end
  43. function ShaderProgram:reloadProgram()
  44. local retVal = Polycode.ShaderProgram_reloadProgram(self.__ptr)
  45. end
  46. function ShaderProgram:reloadResource()
  47. local retVal = Polycode.ShaderProgram_reloadResource(self.__ptr)
  48. end
  49. function ShaderProgram:__delete()
  50. if self then Polycode.delete_ShaderProgram(self.__ptr) end
  51. end