OpenGLを学ぶために、Androidで以下のサンプルコードを試しました。しかし、期待される出力が表示されませんでした。問題がどこにあるか指摘してください。
fadden の寄稿を参考にしました。
ステップ1:
renderHandler で renderThread を作成しました。
public void run() {
Looper.prepare();
mHandler = new RenderHandler(this);
mEconEglCore = new EGLCore(null, EGLCore.FLAG_RECORDABLE);
EGLSurface eglSur = mEconEglCore.createWindowSurface(userSurface);
synchronized (mStartLock) {
mReady = true;
mStartLock.notifyAll();
}
Looper.loop();
}
RenderThread コンストラクターで受け取った userSurface。
public RenderThread(Surface surface) {
// Log.d (TAG, "Inside Render Thread..");
userSurface = surface;
}
現在、Choreographer Callback メカニズムを使用して doFrame() API を呼び出して、表面に色を描画するだけです。
GLES20.glLineWidth(3.0f);
GLES20.glClearColor(0.6f, 1.0f, 0.3f, 1.0f);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
注: アプリケーションは TextureView を使用し、次の方法でサーフェスを受け取りました。
mytextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Log.d(TAG, "Surface Texture Available..");
userSurface = new Surface(surface);
問題:
OpenGL コーディングの正しい手順に沿っているかどうかはわかりません。また、表面に色が表示されていませんが、黒色のみです。何もしなくても黒い色をします。
入力をお願いします。また、私が注意する必要がある不足している部分を教えてください。