diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index e53deca..9fe86f8 100644 --- a/.idea/caches/build_file_checksums.ser +++ b/.idea/caches/build_file_checksums.ser Binary files differ diff --git a/build.gradle b/build.gradle index 04944d3..be26e3f 100644 --- a/build.gradle +++ b/build.gradle @@ -21,15 +21,13 @@ apply plugin: 'android' dependencies { -// compile fileTree(dir: 'libs', include: '*.jar') - - api fileTree(dir: 'libs', include: '*.jar') + // compile fileTree(dir: 'libs', include: '*.jar') + api fileTree(include: '*.jar', dir: 'libs') } android { compileSdkVersion 22 buildToolsVersion '27.0.3' - sourceSets { main { manifest.srcFile 'AndroidManifest.xml' @@ -54,6 +52,11 @@ debug.setRoot('build-types/debug') release.setRoot('build-types/release') } + defaultConfig { + minSdkVersion 16 + } + productFlavors { + } } repositories { diff --git a/src/framework/RWT/RWTImageLoader.java b/src/framework/RWT/RWTImageLoader.java index 7861ca2..b85dded 100644 --- a/src/framework/RWT/RWTImageLoader.java +++ b/src/framework/RWT/RWTImageLoader.java @@ -71,6 +71,9 @@ } else if (res != null) { bitmap = BitmapFactory.decodeResource(res, id); } + if (format == ImageComponent2D.FORMAT_RGBA) { + bitmap.setHasAlpha(true); + } return new ImageComponent2D(format, bitmap); } diff --git a/src/framework/RWT/RWTSprite.java b/src/framework/RWT/RWTSprite.java index 01555be..678cfc0 100644 --- a/src/framework/RWT/RWTSprite.java +++ b/src/framework/RWT/RWTSprite.java @@ -93,17 +93,17 @@ * TODO: 画像サイズが元と違うため,そのサイズが元のものになるようにする * Bitmap.createScaledBitmap(robot, 100, 100, false);のやつ */ - public void setTexture(Resources res, int id, int flags, GL10 gl) { - texLoader = new RWTImageLoader(res, id, flags); + public void setTexture(Resources res, int id, boolean isEnableAlpha) { + texLoader = new RWTImageLoader(res, id, + TextureLoader.BY_REFERENCE | TextureLoader.Y_UP, + isEnableAlpha ? ImageComponent2D.FORMAT_RGBA : ImageComponent2D.FORMAT_RGB); image = texLoader.getImage(); tex = texLoader.getTexture(); texPos.setX(0.f); texPos.setY(image.getBitmap().getHeight()); texSize.setX(image.getBitmap().getWidth()); texSize.setY(-image.getBitmap().getHeight()); - pos.setX(0.f); - pos.setY(0.f); - pos.setZ(0.f); + pos.set(0.0, 0.0, 0.0); viewSize.setX((float)image.getBitmap().getWidth()); viewSize.setY((float)image.getBitmap().getHeight()); } @@ -131,6 +131,7 @@ // 拡大縮小のアルゴリズム指定 gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST); gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST); + int rect[] = { (int)texPos.getX(), (int)texPos.getY(), (int)texSize.getX(), (int)texSize.getY()}; ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D,GL11Ext.GL_TEXTURE_CROP_RECT_OES, rect, 0); ((GL11Ext) gl).glDrawTexfOES((int)pos.getX(), (int)pos.getY(), (int)pos.getZ(), (int)viewSize.getX(), (int)viewSize.getY()); diff --git a/src/framework/RWT/RWTSprites.java b/src/framework/RWT/RWTSprites.java index 4da374a..af99260 100644 --- a/src/framework/RWT/RWTSprites.java +++ b/src/framework/RWT/RWTSprites.java @@ -9,7 +9,7 @@ * @author s.iwatani */ public class RWTSprites { - private ArrayList sprites = new ArrayList(); + private ArrayList sprites = new ArrayList<>(); public RWTSprites() {} @@ -42,17 +42,28 @@ // なんかやってる gl.glDisable(GL10.GL_DEPTH_TEST); gl.glDisable(GL10.GL_DITHER); - gl.glEnable(GL10.GL_ALPHA_TEST); + gl.glDisable(GL10.GL_LIGHTING); + +// gl.glEnable(GL10.GL_ALPHA_TEST); + // アルファ値を適用するための一連 + gl.glEnable(GL10.GL_ALPHA); // GL_INVALID_ENUMが出るけどちゃんと動いてる.謎 + gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); + gl.glEnable(GL10.GL_BLEND); + gl.glEnable(GL10.GL_TEXTURE_2D); - //テクスチャ0番をアクティブにする(よくわからん) + // テクスチャ0番をアクティブにする(よくわからん) gl.glActiveTexture(GL10.GL_TEXTURE0); - for (RWTSprite sprite : sprites){ + // 描画 + for (RWTSprite sprite : sprites) { sprite.draw(gl); } + // 戻し gl.glEnable(GL10.GL_DEPTH_TEST); gl.glEnable(GL10.GL_DITHER); + gl.glEnable(GL10.GL_LIGHTING); + gl.glDisable(GL10.GL_ALPHA); } } diff --git a/src/spriteTest/TestActivity.java b/src/spriteTest/TestActivity.java index 72a214c..53703b4 100644 --- a/src/spriteTest/TestActivity.java +++ b/src/spriteTest/TestActivity.java @@ -1,18 +1,15 @@ package spriteTest; -import framework.RWT.RWTRenderer; import framework.RWT.RWTSprite; import java3d.Appearance; import java3d.Box; import java3d.Material; -import java3d.Texture; import java3d.TextureCubeMap; import java3d.TextureLoader; import java3d.Transform3D; import radish.framework.R; -import android.app.Activity; -import android.content.res.Resources; + import android.os.Bundle; import android.util.Log; import android.view.Menu; @@ -37,7 +34,7 @@ private Transform3D initTrans; private Solid3D diceObj; - private RWTSprite sprite, sprite2; + private RWTSprite[] sprite = new RWTSprite[3]; @Override protected void onCreate(Bundle savedInstanceState) { @@ -102,13 +99,16 @@ view.attachCamera(camera); setContentView(view); - sprite = new RWTSprite(view); - sprite.setTexture(getResources(), R.drawable.dice_6, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP, view.getGl()); + sprite[0] = new RWTSprite(view); + sprite[0].setTexture(getResources(), R.drawable.dice_6, false); - sprite2 = new RWTSprite(view); - sprite2.setTexture(getResources(), R.drawable.dice_1, TextureLoader.BY_REFERENCE | TextureLoader.Y_UP, view.getGl()); - sprite2.setPosition(100, 300); + sprite[1] = new RWTSprite(view); + sprite[1].setTexture(getResources(), R.drawable.wadahand, true); + sprite[1].setPosition(100, 100); + sprite[2] = new RWTSprite(view); + sprite[2].setTexture(getResources(), R.drawable.tss_thumb, true); + sprite[2].setPosition(100, 100); start(10); }