English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

AndroidでOpenGLのGLSurfaceViewを使用してActivityを作成する方法

この記事では、AndroidでOpenGLのGLSurfaceViewを使ってActivityを作成する方法について説明しています。皆さんに参考にしていただければ幸いです。具体的には以下の通りです:

AndroidはOpenGL ES APIを使用して图形を作成したり操作するために2つの基本的なクラスを提供しています:GLSurfaceViewとGLSurfaceView.Renderer。したがって、まずこれらのクラスを理解する必要があります。

1. GLSurfaceView:

これはビュークラスであり、OpenGL APIを呼び出してその上に图形を描画したり物体を操作できる機能があります。SurfaceViewと似ています。GLSurfaceViewクラスのインスタンスを作成し、独自のレンダラーを追加することができます。タッチスクリーンの操作を実現するために、このクラスを拡張してタッチリスナーを実装する必要があります。

2. GLSurfaceView.Renderer

このインターフェースは、OpenGLのGLSurfaceViewで图形を描画するために必要なメソッドを定義しています。これらのインターフェースを実装するためには、別のクラスで実装を行い、GLSurfaceView.setRenderer()メソッドを使ってGLSurfaceViewインスタンスにアタッチする必要があります。

私たちは以下のGLSurfaceView.Rendererのメソッドを実装する必要があります:

a) onSurfaceCreated(): システムはGLSurfaceViewが作成されたときに一度だけこのメソッドを呼び出します。これを使ってOpenGLの環境変数を設定したり、OpenGLの图形物体を初期化することができます。

b) onDrawFrame(): システムはGLSurfaceViewを再描画するたびにこのメソッドを呼び出します。このメソッドは主に图形の描画操作を完了します。

c) onSurfaceChanged(): システムはGLSurfaceViewの幾何属性が変更されたときにこのメソッドを呼び出します。これにはサイズやデバイスのスクリーン方向の変更が含まれます。例えば、スクリーンが直立から横に変わるときに呼び出されます。このメソッドは主にGLSurfaceViewコンテナの変更に対応するために使用されます。

実験手順

1. 新しいプロジェクトを追加

2. 新しいクラスmyGLRendererを追加し、GLSurfaceView.Rendererインターフェースを実装

以下の通りです:

public class myGLRenderer implements Renderer {
  @Override
  public void onDrawFrame(GL10 gl) {
    // TODO Auto-生成されたメソッドスタブ
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);//キャッシュをクリア
  }
  @Override
  public void onSurfaceChanged(GL10 gl, int width, int height) {
    // TODO Auto-生成されたメソッドスタブ
    gl.glViewport(0, 0, width, height);//視口を設定
  }
  @Override
  public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    // TODO Auto-生成されたメソッドスタブ
    gl.glClearColor(0.5f, 0.5f, 0.5f, 1.0f); //クリア色を設定
  }
}

3. 新しいクラスmyGLSurfaceViewを追加し、親クラスとしてGLSurfaceViewを設定

以下の通りです:

public class myGLSurfaceView extends GLSurfaceView {
  public myGLSurfaceView(Context context) {
    super(context);
    // TODO Auto-生成されたコンストラクタスタブ
    mrender = new myGLRenderer();
    setRenderer(mrender);
  }
  private myGLRenderer mrender;
}

4. メインプログラムコードは以下の通りです:

public class HelloOpenGLActivity extends Activity {
  /** アクティビティが最初に作成されたときに呼び出されます。 */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mGLSurfaceView = new myGLSurfaceView(this);
    setContentView(mGLSurfaceView);//ここでは、以前よく使っていたR.layout.mainをmGLSurfaceViewで置き換えます。
  }
  private myGLSurfaceView mGLSurfaceView;
}

これで、OpenGLを使用して灰色の背景を描画するアプリケーションを完成させました。もちろん、これは最も基本的な機能です。今後は、OpenGLを使用して簡単な幾何学的形状を描画する方法について一緒に探求しましょう。

Androidに関する詳細な内容に興味がある読者は、本サイトの特集をチェックしてください:《Androidプログラミングのactivity操作技術のまとめ》、《AndroidビューView技術のまとめ》、《AndroidSQLiteデータベース操作技術のまとめ》、《AndroidJSON形式データ操作技術のまとめ》、《Androidデータベース操作技術のまとめ》、《Androidファイル操作技術の集約》、《Androidプログラミング開発のSDカード操作方法の集約》、《Android開発入門と進階トレーニング》、《Androidリソース操作技術の集約》および《Androidコントロールの使い方のまとめ》

この記事で述べたことが皆様のAndroidプログラムデザインに役立つことを願っています。

声明:本文の内容はインターネットから収集され、著作権者所有、インターネットユーザーが自発的に貢献し、アップロードしたものであり、本サイトは所有権を持ちません。また、人工編集は行われていません。著作権侵害が疑われる内容がある場合は、メール:notice#wまでご連絡ください。3codebox.com(メール送信時、#を@に変更してください)で通報し、関連証拠を提供してください。確認がとれた場合、本サイトは即座に侵害疑いのコンテンツを削除します。

おすすめ