示例#1
0
 def createFramebufferObject(self, size):
     qDebug('ObjectRenderer: Created OpenGLFBO')
     fmt = QOpenGLFramebufferObjectFormat()
     fmt.setAttachment(QOpenGLFramebufferObject.Depth)
     fbo = QOpenGLFramebufferObject(size, fmt)
     fbo.release()
     self.__fbo = fbo
     return self.__fbo
示例#2
0
    def _render(self):
        """Render QML component to a texture."""
        if not self.initialized or self._framebuffers is None or not self.ctx.makeCurrent():
            return

        self._control.render()
        self._window.resetOpenGLState()
        QOpenGLFramebufferObject.bindDefault()
        self.ctx.glContext.functions().glFlush()
        current_fb, next_fb = self._framebuffers
        self._controller.framebuffer_rendered(current_fb)
        self._framebuffers = next_fb, current_fb
        self._window.setRenderTarget(next_fb.id, next_fb.size)
 def createFramebufferObject(self, size: QSize) -> QOpenGLFramebufferObject:
     print("createFramebufferobj")
     gl_format = QOpenGLFramebufferObjectFormat()
     gl_format.setAttachment(QOpenGLFramebufferObject.Depth)
     frame_buffer_object = QOpenGLFramebufferObject(size, gl_format)
     self.__fbo = frame_buffer_object
     return self.__fbo
示例#4
0
    def _render(self):
        """Render QML component to a texture."""
        if not self.initialized or self._framebuffer is None:
            return

        surface = self._surface
        if not self.context.makeCurrent(surface):
            return

        self._control.render()
        self._window.resetOpenGLState()
        QOpenGLFramebufferObject.bindDefault()
        self.context.functions().glFlush()

        textureID = self._framebuffer.texture()
        self.rendered.emit(textureID)
 def createFramebufferObject(self, size: QSize) -> QOpenGLFramebufferObject:
     #        qDebug("Creating FrameBufferObject")
     format = QOpenGLFramebufferObjectFormat()
     format.setAttachment(
         QOpenGLFramebufferObject.Depth
     )  # or QOpenGLFramebufferObject.CombinedDepthStencil
     self.__openGLFbo = QOpenGLFramebufferObject(size, format)
     # self.__openGLFbo.release()
     return self.__openGLFbo
示例#6
0
文件: view.py 项目: nitrotm/3dtagger
  def exportImage(self, target):
    if not self.active:
      return

    fbo = QOpenGLFramebufferObject(self.info.width, self.info.height)
    fbo.setAttachment(QOpenGLFramebufferObject.Depth)
    if not fbo.bind():
      raise Exception("Failed to bind framebuffer")
    try:
      depth = target.render(self)

      fbo.toImage().save(str(self.info.path / (target.filename + ".png")))

      cv2.imwrite(
        str(self.info.path / (target.filename + "-depth.png")),
        (depth * 65535.0).astype(np.uint16)
      )
    finally:
      fbo.release()
    def createFramebufferObject(self, size: QSize) -> QOpenGLFramebufferObject:
        qDebug('RendererHelper::createFramebufferObject()')
        macSize = QSize(size.width() / 2, size.height() / 2)

        format = QOpenGLFramebufferObjectFormat()
        format.setAttachment(QOpenGLFramebufferObject.Depth)

        # ifdef Q_OS_MAC
        #     std::unique_ptr<QOpenGLFramebufferObject> framebufferObject(new QOpenGLFramebufferObject(macSize, format))
        # else
        framebufferObject = QOpenGLFramebufferObject(size, format)
        # endif
        self.__m_vtkRenderWindow.SetBackLeftBuffer(GL.GL_COLOR_ATTACHMENT0)
        self.__m_vtkRenderWindow.SetFrontLeftBuffer(GL.GL_COLOR_ATTACHMENT0)
        self.__m_vtkRenderWindow.SetBackBuffer(GL.GL_COLOR_ATTACHMENT0)
        self.__m_vtkRenderWindow.SetFrontBuffer(GL.GL_COLOR_ATTACHMENT0)
        self.__m_vtkRenderWindow.SetSize(framebufferObject.size().width(),
                                         framebufferObject.size().height())
        self.__m_vtkRenderWindow.SetOffScreenRendering(True)
        self.__m_vtkRenderWindow.Modified()
        framebufferObject.release()
        return framebufferObject
示例#8
0
 def createFramebufferObject(self, size: QSize) -> QOpenGLFramebufferObject:
     format = QOpenGLFramebufferObjectFormat()
     format.setAttachment(QOpenGLFramebufferObject.Depth)
     framebufferObject = QOpenGLFramebufferObject(size, format)
     framebufferObject.release()
     return framebufferObject
示例#9
0
 def _createFrameBuffer(self):
     """Create framebuffer for quick window."""
     print(f'QmlOffscreenRenderer._createFrameBufferObject: {self.size}')
     self._framebuffer = fbo = QOpenGLFramebufferObject(
         self.size, QOpenGLFramebufferObject.CombinedDepthStencil)
     self._window.setRenderTarget(fbo)