1

互いの上にレンダリングされる画像レイヤーがあるという意味で、少し「フォトショッピー」な何かを書いています。

各レイヤーは FBO にレンダリングされ、fbo はエフェクトなどを介して実行できます。

ユーザーは画像を歪めることができますが、最初は画像を独自の縦横比でレンダリングする必要があります。

現在、各画像は次のように FBO に描画されます。

 //fbo is created at the size of the texture
 if (fboRenderTarget == null)
        {
            fboRenderTarget = new RenderTarget(gl);
            fboRenderTarget.ChangeRenderTarget(new RenderTargetState(textureInfo.Width, textureInfo.Height, TextureType.LowPrecisionIsNorm));
        }


       //viewport is set to size of texture
        gl.Viewport(0, 0, textureInfo.Width, textureInfo.Height);
        gl.BindFramebufferEXT(OpenGL.GL_FRAMEBUFFER_EXT, fboRenderTarget.Name);

        //draw the texture

そして私がブレンドしているとき:

 //fbo is created at the size of the destination texture
 if (fboRenderTarget == null)
        {
            fboRenderTarget = new RenderTarget(gl);
            fboRenderTarget.ChangeRenderTarget(new RenderTargetState(dstTextureInfo.Width, dstTextureInfo.Height, TextureType.LowPrecisionIsNorm));
        }


       //viewport is set to size of texture
        gl.Viewport(0, 0, dstTextureInfo.Width, dstTextureInfo.Height);
        gl.BindFramebufferEXT(OpenGL.GL_FRAMEBUFFER_EXT, 
       ....

       //SET MATRIX
            ShaderPropertySetter.SetUniformMat4(gl, "uModelMatrix_m4", modelMatrix);
            if (srcMatrix != null)
                ShaderPropertySetter.SetUniformMat4(gl, "uSrcTextureMatrix_m4", srcMatrix.GetAsMat4());
            if (dstMatrix != null)
                ShaderPropertySetter.SetUniformMat4(gl, "uDstTextureMatrix_m4", dstMatrix.GetAsMat4());

現在、すべてのテクスチャの歪みなどは src テクスチャ マトリックスを介して発生します。現在、モデルと dst は常に ID に設定されており、投影マトリックスはありません。それはすべて間違っていると感じます。

最終的な複合テクスチャは、画面サイズのサーフェスとビュー ポートを使用して画面にレンダリングされます。

各画像の縦横比が維持されるようにするにはどうすればよいですか?

ps これには大規模なリファクタリングが必要になる可能性があることは承知しています。

4

0 に答える 0