/test/support/opengl_stub.rb

https://github.com/jellymann/mittsu · Ruby · 276 lines · 214 code · 62 blank · 0 comment · 0 complexity · 763ab565a6447a575ef64d0ebe54708f MD5 · raw file

  1. require 'opengl'
  2. require 'mittsu/renderers/opengl/opengl_lib'
  3. module Mittsu
  4. module OpenGLLib
  5. def self.discover
  6. Struct.new(:path, :file).new(nil, nil)
  7. end
  8. end
  9. end
  10. module OpenGLStub
  11. def self.load_lib(*args)
  12. end
  13. def self.get_command(command)
  14. OpenGLInstance.method(command)
  15. end
  16. OpenGL.constants.each do |c|
  17. const_set c, OpenGL.const_get(c)
  18. end
  19. OpenGL.instance_methods.each do |m|
  20. define_method m do |*args|
  21. nil
  22. end
  23. end
  24. def glGenVertexArrays(n, arrays)
  25. next_va = (@@_glGenVertexArrays ||= 1)
  26. @@_glGenVertexArrays += n
  27. arrays[0...n*4] = n.times.map { |i| i + next_va }.pack('L'*n)
  28. nil
  29. end
  30. def glGenBuffers(n, arrays)
  31. next_va = (@@_glGenBuffers ||= 1)
  32. @@_glGenBuffers += n
  33. arrays[0...n*4] = n.times.map { |i| i + next_va }.pack('L'*n)
  34. nil
  35. end
  36. def glGenTextures(n, arrays)
  37. next_va = (@@_glGenTextures ||= 1)
  38. @@_glGenTextures += n
  39. arrays[0...n*4] = n.times.map { |i| i + next_va }.pack('L'*n)
  40. nil
  41. end
  42. def glGenFramebuffers(n, arrays)
  43. next_va = (@@_glGenFramebuffers ||= 1)
  44. @@_glGenFramebuffers += n
  45. arrays[0...n*4] = n.times.map { |i| i + next_va }.pack('L'*n)
  46. nil
  47. end
  48. def glGenRenderbuffers(n, arrays)
  49. next_va = (@@_glGenRenderbuffers ||= 1)
  50. @@_glGenRenderbuffers += n
  51. arrays[0...n*4] = n.times.map { |i| i + next_va }.pack('L'*n)
  52. nil
  53. end
  54. def glGetBooleanv(_, params)
  55. params[0] = [1].pack('C')
  56. nil
  57. end
  58. def glGetDoublev(_, params)
  59. params[0..-1] = [rand].pack('D')
  60. nil
  61. end
  62. def glGetFloatv(_, params)
  63. params[0..-1] = [rand].pack('F')
  64. nil
  65. end
  66. def glGetIntegerv(_, params)
  67. params[0..-1] = [4096].pack('L')
  68. nil
  69. end
  70. def glGetShaderiv(_, _, params)
  71. params[0..-1] = [4096].pack('L')
  72. nil
  73. end
  74. alias :glGetProgramiv :glGetShaderiv
  75. def glGetShaderInfoLog(_, _, length, infoLog)
  76. length[0...4] = [0].pack('L')
  77. nil
  78. end
  79. alias :glGetProgramInfoLog :glGetShaderInfoLog
  80. def glGetError()
  81. OpenGL::GL_NO_ERROR
  82. end
  83. def glFrontFace(mode)
  84. @@_glFrontFace = mode
  85. end
  86. def glCullFace(mode)
  87. @@_glCullFace = mode
  88. end
  89. def glEnable(cap)
  90. (@@_glEnable ||= {}).tap { |e| e[cap] = true }
  91. end
  92. def glDisable(cap)
  93. (@@_glEnable ||= {}).tap { |e| e[cap] = false }
  94. end
  95. def glIsEnabled(cap)
  96. (@@_glEnable ||= {})[cap]
  97. end
  98. def glGenLists(_range_)
  99. _range_
  100. end
  101. def glRenderMode(_mode_)
  102. 0
  103. end
  104. def glIsList(_list_)
  105. true
  106. end
  107. def glIsTexture(_texture_)
  108. true
  109. end
  110. def glAreTexturesResident(_n_, _textures_, _residences_)
  111. true
  112. end
  113. def glIsQuery(_id_)
  114. true
  115. end
  116. def glIsBuffer(_buffer_)
  117. true
  118. end
  119. def glUnmapBuffer(_target_)
  120. true
  121. end
  122. def glCreateProgram()
  123. (@@_glCreateProgram ||= 1).tap { @@_glCreateProgram += 1 }
  124. end
  125. def glCreateShader(_type_)
  126. (@@_glCreateShader ||= 1).tap { @@_glCreateShader += 1 }
  127. end
  128. def glGetAttribLocation(_program_, _name_)
  129. (@@_glGetAttribLocation ||= 1).tap { @@_glGetAttribLocation += 1 }
  130. end
  131. def glGetUniformLocation(_program_, _name_)
  132. (@@_glGetUniformLocation ||= 1).tap { @@_glGetUniformLocation += 1 }
  133. end
  134. def glIsProgram(_program_)
  135. true
  136. end
  137. def glIsShader(_shader_)
  138. true
  139. end
  140. def glIsEnabledi(_target_, _index_)
  141. true
  142. end
  143. def glGetFragDataLocation(_program_, _name_)
  144. (@@_glGetFragDataLocation ||= 1).tap { @@_glGetFragDataLocation += 1 }
  145. end
  146. def glIsRenderbuffer(_renderbuffer_)
  147. true
  148. end
  149. def glIsFramebuffer(_framebuffer_)
  150. true
  151. end
  152. def glCheckFramebufferStatus(_target_)
  153. OpenGL::GL_FRAMEBUFFER_COMPLETE
  154. end
  155. def glIsVertexArray(_array_)
  156. true
  157. end
  158. def glGetUniformBlockIndex(_program_, _uniformBlockName_)
  159. (@@_glGetUniformBlockIndex ||= 1).tap { @@_glGetUniformBlockIndex += 1 }
  160. end
  161. def glIsSync(_sync_)
  162. true
  163. end
  164. def glClientWaitSync(_sync_, _flags_, _timeout_)
  165. OpenGL::GL_ALREADY_SIGNALED
  166. end
  167. def glGetFragDataIndex(_program_, _name_)
  168. (@@_glGetFragDataIndex ||= 1).tap { @@_glGetFragDataIndex += 1 }
  169. end
  170. def glIsSampler(_sampler_)
  171. true
  172. end
  173. def glGetSubroutineUniformLocation(_program_, _shadertype_, _name_)
  174. (@@_glGetSubroutineUniformLocation ||= 1).tap { @@_glGetSubroutineUniformLocation += 1 }
  175. end
  176. def glGetSubroutineIndex(_program_, _shadertype_, _name_)
  177. (@@_glGetSubroutineIndex ||= 1).tap { @@_glGetSubroutineIndex += 1 }
  178. end
  179. def glIsTransformFeedback(_id_)
  180. true
  181. end
  182. def glCreateShaderProgramv(_type_, _count_, _strings_)
  183. (@@_glCreateShaderProgramv ||= 1).tap { @@_glCreateShaderProgramv += 1 }
  184. end
  185. def glIsProgramPipeline(_pipeline_)
  186. true
  187. end
  188. def glGetProgramResourceIndex(_program_, _programInterface_, _name_)
  189. (@@_glGetProgramResourceIndex ||= 1).tap { @@_glGetProgramResourceIndex += 1 }
  190. end
  191. def glGetProgramResourceLocation(_program_, _programInterface_, _name_)
  192. (@@_glGetProgramResourceLocation ||= 1).tap { @@_glGetProgramResourceLocation += 1 }
  193. end
  194. def glGetProgramResourceLocationIndex(_program_, _programInterface_, _name_)
  195. (@@_glGetProgramResourceLocationIndex ||= 1).tap { @@_glGetProgramResourceLocationIndex += 1 }
  196. end
  197. def glGetDebugMessageLog(_count_, _bufSize_, _sources_, _types_, _ids_, _severities_, _lengths_, _messageLog_)
  198. 0
  199. end
  200. def glUnmapNamedBuffer(_buffer_)
  201. true
  202. end
  203. def glCheckNamedFramebufferStatus(_framebuffer_, _target_)
  204. OpenGL::GL_FRAMEBUFFER_COMPLETE
  205. end
  206. def glGetGraphicsResetStatus()
  207. OpenGL::GL_NO_ERROR
  208. end
  209. def self.get_platform
  210. :OPENGL_PLATFORM_TEST
  211. end
  212. end
  213. OpenGLInstance = Object.new.extend(OpenGLStub)
  214. OpenGL = OpenGLStub