AndroidフォンのPongクローンで遊んでいます。これまでのコードを使用して、この画像を画面に表示できます。
何らかの理由で、以下のコードではボール/ドットが画面上を移動しません。
@Override
public void onDrawFrame(GL10 glUnused) {
// Clear the rendering surface.
glClear(GL_COLOR_BUFFER_BIT);
table.draw(shaderProgram);
paddle.bindData(shaderProgram);
paddle.draw(shaderProgram);
ball.bindData(shaderProgram);
ball.draw(shaderProgram);
ball.translate(0.1f);
}
モデルマトリックスを使用して物事を動かす方が良いことはわかっていますが、改良する前に遊んでいます。とにかく、ここに ball.translate method() があります
public void translate(float amount)
{
for(int i=0; i<VERTEX_DATA.length; i++)
{
VERTEX_DATA[i] += amount;
}
}
- 私の理解では、フレームが変わるたびに onDrawFrame() が呼び出されます
- ボール オブジェクトには頂点データが含まれています
- ball.bindData() は、頂点データをネイティブ メモリに配置し、それをシェーダーの属性にリンクします。
- ball.translate() はボール オブジェクト内の頂点データを更新し、すべてがシェーダーに再度バインドされて再描画されます。