2012-04-03 34 views
0

テクスチャレンダリングとテクスチャの作業をしようとしています。これまでは、テクスチャとすべてを描画するために必要なすべてのGLガビンを実行します。唯一の問題は、スケーリングをすべてオフにすることです。テクスチャスケーリングの問題へのレンダリングの問題(?)

私は、ビューポートをテクスチャのサイズに設定したいと思っていました。-halfwidth、halfwidth、-halfheight、halfheightとしてgluOrtho2d(テクスチャに描画する方法)を設定しました。これは、描画位置0,0を中心にする必要があることを意味します。半二重、半角の位置が右上隅などにあるはずです

私は本当に奇妙な効果を得ていますが、それは正しいスケールでテクスチャを描いていないようです。私が間違っていることを示唆している?

おかげ

public void renderToTexture(GLRenderer glRenderer, GL10 gl) 
    { 
    boolean checkIfContextSupportsExtension = checkIfContextSupportsExtension(gl, "GL_OES_framebuffer_object"); 
    if(checkIfContextSupportsExtension) 
    { 
     GL11ExtensionPack gl11ep = (GL11ExtensionPack) gl; 

     int mFrameBuffer = createFrameBuffer(gl,texture.getWidth(), texture.getHeight(), texture.getGLID()); 
     if (mFrameBuffer == -1) 
     { 
     return; 
     } 
     gl11ep.glBindFramebufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, mFrameBuffer); 

     int halfWidth = texture.getWidth()/2;//width/2; 
     int halfHeight = texture.getHeight()/2;//height/2; 

     gl.glViewport(0,0,texture.getWidth(), texture.getHeight()); 
     gl.glLoadIdentity(); 

     GLU.gluOrtho2D(gl, -halfWidth, halfWidth , -halfHeight, halfHeight); 

     gl.glMatrixMode(GL10.GL_MODELVIEW); 
     gl.glLoadIdentity(); 

     gl.glClearColor(0f, 1f, 0f, 1f); 
     gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 

     //draw the old version of the texture to framebuffer: 
     Quad quad = new Quad(texture.getWidth(), texture.getHeight()); 
     quad.setTexture(texture); 

     SpriteRenderable sr = new SpriteRenderable(quad); 
     sr.renderTo(glRenderer, gl, 1); 

     //draw the new gl objects etc to framebuffer 
     for (Renderable renderable : renderThese) 
     { 
     if (renderable.isVisible()) { 
      renderable.renderTo(glRenderer, gl, 1); 
     } 
     } 

     //default to the old framebuffer 
     gl11ep.glBindFramebufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, 0); 
    } 
    } 

画像:

この1は、任意のテクスチャのレンダリングに先立ってゲームです。 「血液スプラット」(現在は豚が!)オリジナルのテクスチャが途中で見るには小さすぎる縮小したことを絵1.お知らせに示す「アリーナ」の背景テクスチャにレンダリングされた後、これは

image1

(その数pixles)と豚「血液スプラットは、」テクスチャの中心上ひっくり返すと小さくなってきて、ジグザグにジャンプ...

image2

(申し訳ありませんが、十分に担当者を持っていけません投稿の画像を投稿してください)

+0

画像にリンクできますか?その「歪んだ」ものが何を意味するのか想像するのは難しい。 – Tim

+0

何が起こるかを説明しようとしている質問にいくつかの画像を追加しました – Joe

答えて

0

投機的な推測ですが、renderToTexture関数を入力する前にmatrixModeをGL_PROJECTIONに設定することを忘れないでください。関数内には設定されていません。また、関数の最後に投影行列とビューポートを復元することを忘れないでください。

+0

ああ、それです!どのような見落とし...助けてくれてありがとう!今よりずっとうまく作業しています。そして、「反転」は、テクスチャを正しい方法でレンダリングすることで解決されました。 – Joe