OpenGLの古いゲーム(Atari 2600など)の低解像度をfpsゲームのように模倣する正しい方法がどのようにあるのか知りたいです。バッファをテクスチャに書き込んでクワッドに配置し、それを画面解像度に表示するのが最善の方法だと思います。古いゲームを模倣するためのOpenGLの低解像度
は、
に(!素晴らしいゲームを)例えば、何かアドバイスをhttp://www.youtube.com/watch?v=_ELRv06sa-cのを見てみましょう助けたり、サンプル・コードは歓迎されます。
OpenGLの古いゲーム(Atari 2600など)の低解像度をfpsゲームのように模倣する正しい方法がどのようにあるのか知りたいです。バッファをテクスチャに書き込んでクワッドに配置し、それを画面解像度に表示するのが最善の方法だと思います。古いゲームを模倣するためのOpenGLの低解像度
は、
に(!素晴らしいゲームを)例えば、何かアドバイスをhttp://www.youtube.com/watch?v=_ELRv06sa-cのを見てみましょう助けたり、サンプル・コードは歓迎されます。
私はそれを行うための最善の方法は、あなたが言ったように、なる低解像度のテクスチャ(最高FBOsを使用して行う)にすべてをレンダリングしてからちょうどGL_NEAREST
を使用して、もちろん(sceenサイズのクワッドを描画することで質感を表示するだろうと思いますテクスチャの拡大フィルタとして)。おそらく、低解像度のFBOから高解像度のフレームバッファに直接コピーするのにglBlitFramebuffer
を使用することもできますが、この方法でデフォルトのフレームバッファ(表示されたフレームバッファ)に直接コピーできるかどうかはわかりません。
EDIT:framebuffer_blitの仕様を見た後、あなただけでglBlitFramebuffer(EXT/ARB)
を使用して、高解像度のデフォルトのフレームバッファに低解像度のFBOからコピーすることができそうです。これは頂点 - フラグメント - パイプラインを完全にバイパスするので、テクスチャマッピングされたクワッドを使用するよりも速くなるかもしれません(これは単純なものでしたが)。また、必要に応じて低解像度の深度バッファとステンシルバッファを取得し、この方法で高解像度の背景を低解像度の背景の上にレンダリングすると、面白い効果が得られるという利点があります。だからこれはどういうわけか、次のようになるでしょう:
generate FBO with low-res renderbuffers for color and depth (and stencil)
...
glBindFramebuffer(GL_FRAMEBUFFER, lowFBO);
render_scene();
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glBlitFramebuffer(0, 0, 640, 480, 0, 0, 1024, 768,
GL_COLOR_BUFFER_BIT [| GL_DEPTH_BUFFER_BIT], GL_NEAREST);
それはかなりクールに見えます。 OpenGLの経験はありませんが、ピクセル化の効果は基本的なGLSLフラグメントシェーダでは達成できませんでしたか?モノクロノイズ/グレインもあるようですが、ビデオ圧縮の可能性がありますが、高速モーションではぼかしが可能です。 –
@Georgeフラグメントシェーダーでしかできないかどうかはわかりません。 –