3

フラグメントシェーダーによって生成されたテクスチャを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 );
4

1 に答える 1

2

textureID不完全なテクスチャのように見えます。

またはに設定GL_TEXTURE_MIN_FILTERします。 GL_NEARESTGL_LINEAR

または、ミップマップの完全なセットを提供します。

于 2013-02-20T16:54:39.173 に答える