2015-11-17 5 views
0

Я попытался под примером кода на Android, чтобы узнать OpenGL. но я не мог видеть ожидаемый результат. Укажите, где проблема?Невозможно установить цвет фона и очистить вывод в EGL

Я использовал вклад fadden в качестве ссылки.

grafika-fadden

Шаг 1:

Я создал renderThread с renderHandler.

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 Constructor.

public RenderThread(Surface surface) { 
     // Log.d (TAG, "Inside Render Thread.."); 
     userSurface = surface; 

    } 

Теперь я Вызывающую doFrame() API с помощью механизма Хореограф Callback просто рисовать цвета на поверхности.

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); 

ПРОБЛЕМА:

Я не уверен, если я совмещен с правой процедуры в Coding OpenGL. Кроме того, я не вижу никакого цвета, отображаемого на поверхности, но только черного цвета. Даже если я ничего не делаю, я делаю черный цвет.

Просьба предоставить ввод. Кроме того, дайте знать недостающую часть, о которой я должен знать?

ответ

0

Думаю, я нашел ошибку, которую совершил.

1) Я создал или связанных с ними поверхности к EGL контексте с помощью

eglCreateWindowSurface 

пропущенного ниже двух шагов:

2). Но я забыл сообщить текущую поверхность EGL Context. Итак, я сделал это.

EGL14.eglMakeCurrent(mEGLDisplay, eglUserSurface, eglUserSurface, 
      mEGLContext); 

3) нам необходимо заменить swapBuffer.of поверхности. Это я сделал по

EGL14.eglSwapBuffers(mEGLDisplay, eglUserSurface); 

Теперь, я вижу, что мой цвет поверхности изменился на зеленый.

Узнал что-то новое сегодня. Благодарю.