1

長い検索の結果、問題の解決策が見つからなかったため、次のようになります。

私は次のスプライトを持っています:

http://i46.tinypic.com/rmji2d.png"">

しかし、OpenGLSurfaceを使用した私のゲームでは、2Dテクスチャを使用すると次のようになります。

http://i47.tinypic.com/2wqb9qs.png"">

テクスチャで使用しているオプションは次のとおりです。

public void onSurfaceCreated(GL10 gl, EGLConfig confid) {
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glClearColor(255,255, 255,0);
gl.glClearDepthf(1.0f);
gl.glEnable(GL10.GL_BLEND);
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

}

 public void loadTextures(GL10 gl, Context context) {
 gl.glGenTextures(textureCount, textures, 0);
    for (int loop = 0; loop < textureCount; loop++) {
        gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[loop]);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
                GL10.GL_LINEAR);
        gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
                GL10.GL_LINEAR);
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, // OpenGL docs.
                GL10.GL_NICEST);
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap[loop], 0);
        bitmap[loop].recycle();
    }
}

画像を拡大縮小して短くしているので、これだけ奇妙なことですか?より良いグラフィックを作成するためにできることはありますか?

ドローを追加しました:

public void draw(GL10 gl) {
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
    for (int loop = 0; loop < sprites.size(); loop++) {
        gl.glPushMatrix();
        try {
            DevQuestSprite sprite = sprites.get(loop);
            sprite.update(screenHeight); // update enemy
            gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[sprite.curSprite]);
            float transx = (wRatio * sprite.x);
            float transy = (screenHeight * wRatio) - (wRatio * sprite.y)
                    - 1 / hRatio;
            gl.glTranslatef(transx, transy, 0.0f);

            sprite.draw(gl);
        } catch (NullPointerException e) {
        }
        gl.glPopMatrix();
    }
}
4

0 に答える 0