Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取帧缓冲区图像并将其保存到Qt中的纹理?_Qt_Opengl - Fatal编程技术网

如何获取帧缓冲区图像并将其保存到Qt中的纹理?

如何获取帧缓冲区图像并将其保存到Qt中的纹理?,qt,opengl,Qt,Opengl,我试图得到立方体的正面和背面,并将它们保存到纹理中,以计算它们的差异 这就是我想要的 立方体的顶点被传递到管道以获得立方体的正面并将其保存到纹理 立方体的顶点被传递到管道以获取立方体的背面并将其保存到纹理 使用立方体正面和背面的纹理,计算它们的差异 我有这样的画 void GLWidget::paintGL() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glShadeModel(GL_SMOOTH); QMatrix

我试图得到立方体的正面和背面,并将它们保存到纹理中,以计算它们的差异

这就是我想要的

  • 立方体的顶点被传递到管道以获得立方体的正面并将其保存到纹理
  • 立方体的顶点被传递到管道以获取立方体的背面并将其保存到纹理
  • 使用立方体正面和背面的纹理,计算它们的差异
  • 我有这样的画

    void GLWidget::paintGL()
    {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glShadeModel(GL_SMOOTH);
    
      QMatrix4x4 mMatrix;
      QMatrix4x4 vMatrix;
      QMatrix4x4 cameraTransformation;
    
      cameraTransformation.rotate(alpha, 0, 1, 0);
      cameraTransformation.rotate(beta, 1, 0, 0);
    
      QVector3D cameraPosition = cameraTransformation * QVector3D(0, 0, distance);
      QVector3D cameraUpDirection = cameraTransformation * QVector3D(0, 1, 0);
      QVector3D eye = QVector3D(0, 0, 0);
    
      vMatrix.lookAt(cameraPosition, eye, cameraUpDirection);
    
      shaderProgram.bind();
      shaderProgram.setUniformValue("mvpMatrix", pMatrix*vMatrix*mMatrix);
    
      //vertex array enable
      shaderProgram.setAttributeArray("vertex", vertices.constData());
      shaderProgram.enableAttributeArray("vertex");
    
      //color array enable
      shaderProgram.setAttributeArray("color", colors.constData());
      shaderProgram.enableAttributeArray("color");
    
    /  /glDisable(GL_DEPTH_TEST);
      glDrawArrays(GL_QUADS, 0, vertices.size());
    
      //vertex&color array disable
      shaderProgram.disableAttributeArray("vertex");
      shaderProgram.disableAttributeArray("color");
    
      shaderProgram.release();
    }