RenderThread.lua 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. class "RenderThread"
  2. RenderThread.JOB_REQUEST_CONTEXT_CHANGE = 0
  3. RenderThread.JOB_CREATE_TEXTURE = 1
  4. RenderThread.JOB_PROCESS_DRAW_BUFFER = 2
  5. RenderThread.JOB_END_FRAME = 3
  6. RenderThread.JOB_CREATE_PROGRAM = 4
  7. RenderThread.JOB_CREATE_SHADER = 5
  8. RenderThread.JOB_BEGIN_FRAME = 6
  9. RenderThread.JOB_CREATE_VERTEX_BUFFERS = 7
  10. RenderThread.JOB_DESTROY_TEXTURE = 8
  11. RenderThread.JOB_DESTROY_SHADER = 9
  12. RenderThread.JOB_DESTROY_PROGRAM = 10
  13. RenderThread.JOB_DESTROY_BUFFER = 11
  14. RenderThread.JOB_CREATE_RENDER_BUFFER = 12
  15. RenderThread.JOB_DESTROY_RENDER_BUFFER = 13
  16. RenderThread.JOB_SET_TEXTURE_PARAM = 14
  17. RenderThread.JOB_DESTROY_SHADER_BINDING = 16
  18. RenderThread.JOB_DESTROY_SHADER_PARAM = 17
  19. RenderThread.JOB_CREATE_MESH = 18
  20. RenderThread.JOB_DESTROY_MESH = 19
  21. function RenderThread:RenderThread(...)
  22. local arg = {...}
  23. for k,v in pairs(arg) do
  24. if type(v) == "table" then
  25. if v.__ptr ~= nil then
  26. arg[k] = v.__ptr
  27. end
  28. end
  29. end
  30. if self.__ptr == nil and arg[1] ~= "__skip_ptr__" then
  31. self.__ptr = Polycode.RenderThread(unpack(arg))
  32. end
  33. end
  34. function RenderThread:setGraphicsInterface(core, graphicsInterface)
  35. local retVal = Polycode.RenderThread_setGraphicsInterface(self.__ptr, core.__ptr, graphicsInterface.__ptr)
  36. end
  37. function RenderThread:runThread()
  38. local retVal = Polycode.RenderThread_runThread(self.__ptr)
  39. end
  40. function RenderThread:enqueueFrame(frame)
  41. local retVal = Polycode.RenderThread_enqueueFrame(self.__ptr, frame.__ptr)
  42. end
  43. function RenderThread:enqueueJob(jobType, data, data2)
  44. local retVal = Polycode.RenderThread_enqueueJob(self.__ptr, jobType, data.__ptr, data2.__ptr)
  45. end
  46. function RenderThread:processJob(job)
  47. local retVal = Polycode.RenderThread_processJob(self.__ptr, job.__ptr)
  48. end
  49. function RenderThread:getShaderBinding()
  50. local retVal = Polycode.RenderThread_getShaderBinding(self.__ptr)
  51. if retVal == nil then return nil end
  52. local __c = _G["ShaderBinding"]("__skip_ptr__")
  53. __c.__ptr = retVal
  54. return __c
  55. end
  56. function RenderThread:processDrawBuffer(buffer)
  57. local retVal = Polycode.RenderThread_processDrawBuffer(self.__ptr, buffer.__ptr)
  58. end
  59. function RenderThread:getFrameInfo()
  60. local retVal = Polycode.RenderThread_getFrameInfo(self.__ptr)
  61. if retVal == nil then return nil end
  62. local __c = _G["RenderThreadDebugInfo"]("__skip_ptr__")
  63. __c.__ptr = retVal
  64. return __c
  65. end
  66. function RenderThread:clearFrameQueue()
  67. local retVal = Polycode.RenderThread_clearFrameQueue(self.__ptr)
  68. end
  69. function RenderThread:initGlobals()
  70. local retVal = Polycode.RenderThread_initGlobals(self.__ptr)
  71. end
  72. function RenderThread:lockRenderMutex()
  73. local retVal = Polycode.RenderThread_lockRenderMutex(self.__ptr)
  74. end
  75. function RenderThread:unlockRenderMutex()
  76. local retVal = Polycode.RenderThread_unlockRenderMutex(self.__ptr)
  77. end
  78. function RenderThread:__delete()
  79. if self then Polycode.delete_RenderThread(self.__ptr) end
  80. end