1

OpenGLと「GLFW」を使用して、テクスチャ画像をOpenCVから生成された頂点のセットである2Dポリゴンにマッピングします。

私の質問は、テクスチャマッピングの結果を、他のポリゴンとマッピングするための新しいテクスチャ(最初のマッピングですでに歪んでいる)として使用できるかどうかです。私の説明はとても悪いと思います。例を見てください。

オリジナルテクスチャ マッピング後

左の画像は私のテクスチャで、右はポリゴンにマッピングした後のテクスチャです(8セットの頂点に対して8ブロックに分割されたテクスチャ。右側のマッピング結果を新しいテクスチャとして使用します。

OpenGLまたはOpenCVで行うことは可能ですか?

4

2 に答える 2

2

2つのFBOと2つのテクスチャが必要です。

シーンを最初のFBO(fbo1)にレンダリングし、テクスチャ(texture1)をシェーダーに送信し、シーンを2番目のFBO(fbo2)にレンダリングします。その後、2番目のテクスチャ(texture2)をシェーダーに送信し、メインFBO(シーンを表示するため)または最初のFBO(別のパスを作成するため)でシーンをレンダリングします。

例 :

1)FBO1でシーンをレンダリングします2)シェーダーにテクスチャ1を送信します3)FBO2で変更されたテクスチャ1をレンダリングします4)シェーダーにテクスチャ2を送信します5)FBO1でテクスチャ2モディファイヤをレンダリングします6)シェーダーにテクスチャ1を送信します、など..。

これは、私が説明しようとしていることを説明するための私のプロジェクトの1つの小さなコードです(ぼかしを入れるため)。

//render the scene to the fbo1
glBindFramebuffer(GL_FRAMEBUFFER, f1);
glClearColor(0.2f, 0.2f, 0.2f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self drawWithShader:_programRTT];

//apply horizontal blur the result go in the fbo2
glBindFramebuffer(GL_FRAMEBUFFER, f2);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, t1);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self drawWithShader:_programBH];

//apply vertical blur the result go in the fbo1
glBindFramebuffer(GL_FRAMEBUFFER, f1);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, t2);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self drawWithShader:_programBV];

//return to the main fbo and display result on screen
[view bindDrawable];
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, t1);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
[self drawWithShader:_program];
于 2013-01-31T16:24:35.193 に答える