1

joglで透明なpngを使用してテキストを書き込もうとしていますが、それを機能させる方法を一生理解できません。私はインターネット上のあらゆる場所に行ってきましたが、JOGL の適切なドキュメントはほとんどありません。

テクスチャをロードする方法は次のとおりです。

private void loadTEXTure()    //Har har, get it?
{
    File file = new File(fontMap);

    try 
    {
        TextureData data = TextureIO.newTextureData(file, GL.GL_RGBA, GL.GL_SRGB8_ALPHA8, false, TextureIO.PNG);
        textTexture = TextureIO.newTexture(data);
    }
    catch (GLException e) { e.printStackTrace(); } 
    catch (IOException e) { e.printStackTrace(); }
}

そして、これはpngが表示される方法です:

public void displayCharacter(GL gl, int[] textureBounds, int x1, int y1, int x2, int y2)
{
    float texCordsx1 = ((float) textureBounds[0])/((float) textTexture.getWidth());
    float texCordsy1 = ((float) textureBounds[1])/((float) textTexture.getHeight());
    float texCordsx2 = ((float) textureBounds[2])/((float) textTexture.getWidth());
    float texCordsy2 = ((float) textureBounds[3])/((float) textTexture.getHeight());

    gl.glEnable(GL.GL_BLEND);
    gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);

    textTexture.enable();
    textTexture.bind();

    gl.glBegin(GL.GL_QUADS);
    gl.glTexCoord2f(texCordsx1, texCordsy1);
    gl.glVertex2f(x1, y1);
    gl.glTexCoord2f(texCordsx1, texCordsy2);
    gl.glVertex2f(x1, y2);
    gl.glTexCoord2f(texCordsx2, texCordsy2);
    gl.glVertex2f(x2, y2);
    gl.glTexCoord2f(texCordsx2, texCordsy1);
    gl.glVertex2f(x2, y1);
    gl.glEnd();

    textTexture.disable();
}

どんな助けでも大歓迎です!

4

1 に答える 1

1

ブレンディング構成は問題ないようです。それらは実際に機能する私のものとまったく同じです。ただし、エラーはnewTextureData(GLProfile glp ...メソッドにあると思います。メソッドはnewTextureData(file ... newtexturedata()メソッドはFileオブジェクトを受け入れず、代わりに最初の引数としてGLProfileプロファイルを期待していると言います。ドキュメントを読んだようにhttp://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/util/texture/TextureIO.html

その行を変更することをお勧めします:

TextureData data = TextureIO.newTextureData(file, GL.GL_RGBA, GL.GL_SRGB8_ALPHA8,    false, TextureIO.PNG);
textTexture = TextureIO.newTexture(data);

textTexture = TextureIO.newTexture(file,mipmap);

また

textTexture = TextureIO.newTexture(cl.getResource("/my/file/path/myimage.png"), false, null);

代わりは。ファイル変数が正しければ、機能するはずです。

JOGLの詳細については、次のチュートリアルを検討する必要があります。http ://www3.ntu.edu.sg/home/ehchua/programming/opengl/JOGL2.0.html

JOGLドキュメントについては、以下を読むことを検討する必要があります:http: //jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc

于 2013-01-18T14:25:06.173 に答える