1

K20 で実行されている cuda と quadro で実行されている opengl とのクロス カード通信を試みていますが、cuda で使用したいテクスチャを登録できないようです。

私のコードは次のようになります

glGenTextures(1, &texId);
glBindTexture(GL_TEXTURE_2D, texId);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureSize, textureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); 
glBindTexture(GL_TEXTURE_2D, 0);

checkGLError();  // Passes 


// This will cause an Access Violation when run from visual studio 10 debugger 
cudaGraphicsGLRegisterImage(&texRes, texId, GL_TEXTURE_2D,cudaGraphicsRegisterFlagsNone);

// If ran with out debugger, cudaGetErrorString() will spit out "invalid argument"
checkCudaError();

Visual Studio 10 デバッガーから実行すると、cudaGraphicsGLRegisterImage によってアクセス違反が発生する

しかし...

デバッガーなしで実行すると、cudaGetErrorString() は「無効な引数」を吐き出します

何が問題なのかわからず、さまざまなエラー メッセージによってさらに混乱しています。

4

1 に答える 1

1

さて、私は何が間違っていたのかを理解したようで、行を変更しました...

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, textureSize, textureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); 

に...

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, textureSize, textureSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);

cuda が GL_RGBA に問題がある理由はわかりませんが、そのようです。

于 2013-07-15T18:56:41.980 に答える