Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
C++ 从帧缓冲区GLSL读取到OpenCV_C++_Opengl_Opencv_Opengl Es - Fatal编程技术网

C++ 从帧缓冲区GLSL读取到OpenCV

C++ 从帧缓冲区GLSL读取到OpenCV,c++,opengl,opencv,opengl-es,C++,Opengl,Opencv,Opengl Es,我只是想给cvMat提供一个由片段着色器生成的纹理,屏幕上没有显示任何内容,我不知道问题出在哪里,这是在驱动程序中还是在glreadPixels中。。我只是将一个TGA图像加载到一个片段着色器,然后对一个四边形进行纹理处理,我想将该纹理提供给cvMat,所以我使用glReadPixesl生成了一个新的纹理,并在四边形上绘制了它,但什么都没有出现 请注意,以下代码在每个帧执行 cv::Mat pixels; glPixelStorei(GL_PACK_ALIGNMENT, (pixels.

我只是想给cvMat提供一个由片段着色器生成的纹理,屏幕上没有显示任何内容,我不知道问题出在哪里,这是在驱动程序中还是在glreadPixels中。。我只是将一个TGA图像加载到一个片段着色器,然后对一个四边形进行纹理处理,我想将该纹理提供给cvMat,所以我使用glReadPixesl生成了一个新的纹理,并在四边形上绘制了它,但什么都没有出现

请注意,以下代码在每个帧执行

cv::Mat pixels;
    glPixelStorei(GL_PACK_ALIGNMENT, (pixels.step & 3) ? 1 : 4);
    glReadPixels(0, 0, 1024, 1024, GL_RGB, GL_UNSIGNED_BYTE, pixels.data);

    glEnable(GL_TEXTURE_2D);
    GLuint textureID;
    glGenTextures(1, &textureID);
       //glDeleteTextures(1, &textureID);

    // Create the texture
    glTexImage2D(GL_TEXTURE_2D,     // Type of texture
                 0,                 // Pyramid level (for mip-mapping) - 0 is the top level
                 GL_RGB,            // Internal colour format to convert to
                 1024,          // Image width  i.e. 640 for Kinect in standard mode
                 1024,          // Image height i.e. 480 for Kinect in standard mode
                 0,                 // Border width in pixels (can either be 1 or 0)
                 GL_RGB, // Input image format (i.e. GL_RGB, GL_RGBA, GL_BGR etc.)
                 GL_UNSIGNED_BYTE,  // Image data type
                 pixels.data);        // The actual image data itself

     glActiveTexture ( textureID );
     glBindTexture ( GL_TEXTURE_2D,textureID );
     glDrawElements ( GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, indices );

textureID
看起来像一个

GL\u纹理\u最小\u过滤器
设置为
GL\u最近的
GL\u线性


或者提供一套完整的mipmap。

请向我解释清楚。你试着用OpenGL纹理创建一个垫子,对吗?我试着用MathOk创建一个纹理。你能告诉我你在前两行做什么吗,
glPixelStorei()
glReadPixels()
。在我看来,您正在将OpenGL纹理复制到像素中。