0

CUDA グラフィックス リソースを指定して、ピクセル バッファ オブジェクトを取得し、RGB ピクセルを配列に取得するにはどうすればよいですか? 誰かが例を提供したり、自分の試みが正しいかどうかを確認したりできますか? 既存のコードは次のようになります。

    cutilSafeCall(cudaGraphicsMapResources(1, &render_cuda_pbo_resource, stream));
    uchar4 *d_output;
    size_t num_bytes;
    cutilSafeCall(cudaGraphicsResourceGetMappedPointer((void **)&d_output, &num_bytes, render_cuda_pbo_resource));

次のコードを追加しました。

    glBindTexture  (GL_TEXTURE_2D, renderTex);
    glPixelStorei  (GL_UNPACK_ALIGNMENT, 1);
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_BGRA, GL_UNSIGNED_BYTE, 0);
    glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
    glBegin(GL_QUADS);
    glTexCoord2f (0.0, 0.0);
    glVertex3f (-1.0, -1.0, 0.0);
    glTexCoord2f (1.0, 0.0);
    glVertex3f (1.0, -1.0, 0.0);
    glTexCoord2f (1.0, 1.0);
    glVertex3f (1.0, 1.0, 0.0);
    glTexCoord2f (0.0, 1.0);
    glVertex3f (-1.0, 1.0, 0.0);
    glEnd();
    glBindTexture(GL_TEXTURE_2D, 0);
    glDisable(GL_TEXTURE_2D);
    glReadPixels(10, 10, width, height, GL_BGRA, GL_UNSIGNED_BYTE, data);
4

1 に答える 1

3

あなたはそうしない。

OpenGLオブジェクトはOpenGLオブジェクトです。CUDAオブジェクトはCUDAオブジェクトです。CUDAにOpenGLオブジェクトにコンテンツを配置させたい場合は、 CUDA OpenGLオブジェクトを提供し、それらにコンテンツを配置させる必要があります。これは通常、で行われcudaGraphicsGLRegisterBufferます。

于 2012-08-20T22:07:55.250 に答える