長い検索の結果、問題の解決策が見つからなかったため、次のようになります。
私は次のスプライトを持っています:
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();
}
}