GL_TEXTURE_2D_ARRAYテクスチャの選択したスライスに1つのGL_TEXTURE_2Dをコピーしようとしています。GL_TEXTURE_2DをGL_TEXTURE_2D_ARRAYの1つのスライスにコピーするテクスチャ
通常のTexture_2Dを1つのフレームバッファにバインドし、Texture_2D_Arrayのスライスのみを別のフレームバッファ(同じサイズ(幅、高さ、GL_RGB、GL_UNSIGNED_BYTE))にバインドしようとします。 その後、glBlitFramebuffer
はこのテクスチャをこのスライスにコピーすると思っていましたが、私はglFramebufferTexture3D
コマンドを誤解していると思います。
ところで:GL_TEXTURE_2Dが正しくロードされ、私も(作品)、それをプリントアウトし
ここに私のコード:
//Create 2 FBOs for copying textures
glGenFramebuffers(1, &nFrameBufferRead); //FBO for texture2D
glGenFramebuffers(1, &nFrameBufferWrite); //FBO for one slice of the texture2d_array
CBasics::GetOpenGLError();
//generate the GL_TEXTURE_2D_ARRAY with given values (glgentextures is already called for this texture)
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGB, nWidth, nHeight, countSlices, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
CBasics::GetOpenGLError();
//Bind the Texture2D to the readFramebuffer
glBindFramebuffer(GL_READ_FRAMEBUFFER, nFrameBufferRead);
glFramebufferTexture(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture2D_ID, 0);
CBasics::GetOpenGLError();
//try to bind the Texture2D_Array to the drawFramebuffer
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, nFrameBufferWrite);
CBasics::GetOpenGLError(); //till here everything works (no glerror)
glFramebufferTexture3D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_ARRAY, texture2D_Array_ID, 0, slicenumber); // here the error appears
CBasics::GetOpenGLError();
//because of the error one step earlier here will be the next error...
glBlitFramebuffer(0, 0, nWidth, nHeight, 0, 0, nWidth, nHeight, GL_COLOR_BUFFER_BIT, GL_NEAREST);
CBasics::GetOpenGLError();
glFramebufferTexture3D
でエラーが表示されます。GL_INVALID_VALUE 私はそれがあるためだと思います
テクスチャがゼロでない場合、またはの名前である場合にGL_INVALID_VALUEが生成されます既存のテクスチャオブジェクト。
第1回:テクスチャを正しく配列にコピーする方法はありますか?それとももっと良い方法がありますか?
第2回:GL_TEXTURE_2D_ARRAYのスライスを1つだけバインドできますか?
3番目:GL_TEXTURE_2D_ARRAYにはglFramebufferTexture3D
コマンドまたはglFramebufferTexture2D
コマンドが必要ですか?
実際にデータをコピー*しようとしていますか?その配列レイヤーにレンダリングしますか?これらは2つの非常に異なる*操作であるためです。 –
@NicolBolas私はデータをコピーしようとしています... TEXTURE_2D_ARRAY内のこのメソッドの後、1つのスライスはTEXTURE_2D – Thomas