Guest User

Untitled

a guest
May 4th, 2020
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.99 KB | None | 0 0
  1.  def _get_depthbuffer_texture(self):
  2.  
  3.         width, height = self.draw_obj.drawing_mgr.region.width, self.draw_obj.drawing_mgr.region.height
  4.  
  5.         texture_id_buf = Buffer(GL_INT, 1)
  6.         fbo = Buffer(GL_INT, 1)
  7.  
  8.         glActiveTexture(GL_TEXTURE0)
  9.         glGenTextures(1, texture_id_buf)
  10.  
  11.         glBindTexture(GL_TEXTURE_2D, texture_id_buf.to_list()[0])
  12.  
  13.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)
  14.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)
  15.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
  16.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
  17.  
  18.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE)
  19.         glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL)
  20.  
  21.         glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, 0)
  22.  
  23.         glGenFramebuffers(1, fbo)
  24.         glBindFramebuffer(GL_FRAMEBUFFER, fbo.to_list()[0])
  25.  
  26.         glFramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, texture_id_buf.to_list()[0], 0)
  27.  
  28.         glDrawBuffer(GL_NONE)
  29.  
  30.         glCheckError('draw')
  31.  
  32.         glReadBuffer(GL_NONE)
  33.  
  34.         fbo_status = glCheckFramebufferStatus(GL_FRAMEBUFFER)
  35.         if fbo_status != GL_FRAMEBUFFER_COMPLETE:
  36.             raise Exception("GL_FRAMEBUFFER_COMPLETE failed, CANNOT use FBO\n")
  37.  
  38.         glBindFramebuffer(GL_FRAMEBUFFER, 0)
  39.         glBindTexture(GL_TEXTURE_2D, 0)
  40.  
  41.         glDisable(GL_TEXTURE_2D)
  42.         glBindTexture(GL_TEXTURE_2D, 0)
  43.         glBindFramebuffer(GL_FRAMEBUFFER, fbo.to_list()[0])
  44.  
  45.         glClear(GL_DEPTH_BUFFER_BIT)
  46.         glColorMask(False, False, False, False)
  47.         glCullFace(GL_BACK)
  48.  
  49.         glEnable(GL_TEXTURE_2D)
  50.         glBindTexture(GL_TEXTURE_2D, texture_id_buf.to_list()[0])
  51.         glBindFramebuffer(GL_FRAMEBUFFER, 0)
  52.         glColorMask(True, True, True, True)
  53.  
  54.         return texture_id_buf.to_list()[0]
Add Comment
Please, Sign In to add comment