私は FlashBuilder、Flex、Flash 開発分野の出身で、LibGDX を介して Android 開発に入る方法を模索しています。
環境のセットアップが完了し、いくつかの基本を学びましたが、テクスチャを使用して平面をレンダリングする方法を理解するのに苦労しています。
私が見つけたデモのほとんどは OpenGL ES2.0 ですが、アプリケーションを両方で実行する必要があるため、テクスチャ プレーンの作成に関する OpenGL ES1.1 チュートリアルを探してみましたが、結局何時間もさまよいました。それで、誰か提案があれば?コード例?チュートリアル?私にお知らせください。すごいでしょう。
これまでに取得したコードは次のとおりですが、何も表示されません (libgdx デモ イメージはコメント アウトされているため、何かをレンダリングするかどうかを確認できますが、レンダリングしません)。
public class MyGdxGame implements ApplicationListener {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private ShaderProgram sp;
private Mesh mesh;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@Override
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera(1, h/w);
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("data/libgdx.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275);
sprite = new Sprite(region);
sprite.setSize(0.9f, 0.9f * sprite.getHeight() / sprite.getWidth());
sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2);
sprite.setPosition(-sprite.getWidth()/2, -sprite.getHeight()/2);
mesh = new Mesh(true, 3, 3, new VertexAttribute(Usage.Position, 3,"a_position"));
mesh.setVertices(new float[] { 100f, 100f, 0,
400f, 100f, 0,
250, 400f, 0 });
mesh.setIndices(new short[] { 0, 1, 2 });
tex = new Texture(Gdx.files.internal("data/libgdx.png"));
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
private Texture tex;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@Override
public void render() {
// Set bg
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
Gdx.gl10.glMatrixMode(GL10.GL_PROJECTION);
Gdx.gl10.glLoadIdentity();
Gdx.gl10.glMatrixMode(GL10.GL_MODELVIEW);
Gdx.gl10.glLoadIdentity();
mesh.render(GL10.GL_TRIANGLES, 0, 3);
batch.begin();
//sprite.draw(batch);
//mesh.render(sp, GL10.GL_TRIANGLES);
batch.draw(tex, 10, 10);
batch.end();
// Results in white window output only...
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// From a previous tutorial attempt didn't show anything
public Mesh createFullScreenQuad() {
float[] verts = new float[20];
int i = 0;
verts[i++] = -1; // x1
verts[i++] = -1; // y1
verts[i++] = 0;
verts[i++] = 0f; // u1
verts[i++] = 0f; // v1
verts[i++] = 1f; // x2
verts[i++] = -1; // y2
verts[i++] = 0;
verts[i++] = 1f; // u2
verts[i++] = 0f; // v2
verts[i++] = 1f; // x3
verts[i++] = 1f; // y2
verts[i++] = 0;
verts[i++] = 1f; // u3
verts[i++] = 1f; // v3
verts[i++] = -1; // x4
verts[i++] = 1f; // y4
verts[i++] = 0;
verts[i++] = 0f; // u4
verts[i++] = 1f; // v4
Mesh mesh = new Mesh( true, 4, 0, // static mesh with 4 vertices and no indices
new VertexAttribute( Usage.Position, 3, ShaderProgram.POSITION_ATTRIBUTE ),
new VertexAttribute( Usage.TextureCoordinates, 2, ShaderProgram.TEXCOORD_ATTRIBUTE+"0" ) );
mesh.setVertices( verts );
return mesh;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@Override
public void resize(int width, int height) {
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@Override
public void pause() {
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@Override
public void resume() {
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@Override
public void dispose() {
batch.dispose();
texture.dispose();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
}