Я хочу добавить аддитивное смешение на поверхности поверхности предварительного просмотра камеры, привязанной к моему контексту opengl.Аддитивное смешивание без glClear
Я получаю странно визуализированную текстуру, когда я включаю смешение (20 шумовых квадратов, получаемых), если я вызываю GLES20.glClear (GLES20.GL_COLOR_BUFFER_BIT); предварительный просмотр является правильным, но я теряю аддитивное смешение, поскольку я очистил буфер!
С glClear вызова
Без glClear вызова
Я понятия не имею, Что проблема, я новичок в OpenGL-ES, любые предложения? Если какой-либо фрагмент кода необходим, я могу обеспечить его лучше понять.
установка соответствующий код только. При необходимости запросите любую другую часть кода.
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
//compile shader, link program.... etc omitted for brevity
//enable additive blending
GLES20.glEnable(GLES20.GL_BLEND);
GLES20.glBlendFunc(GLES20.GL_ONE, GLES20.GL_ONE);
GLES20.glBlendEquation(GLES30.GL_MAX);
}
public void onDrawFrame(GL10 unused) {
// Do not want to do this, but if i do preview is normal but i lose my blending
//GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
surfaceTexture.updateTexImage();
GLES20.glUseProgram(_onscreenShader);
int th = GLES20.glGetUniformLocation(_onscreenShader, "sTexture");
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, _rawVideoTexture);
GLES20.glUniform1i(th, 0);
GLES20.glVertexAttribPointer(_onscreenPositionAttribute, 2, GLES20.GL_FLOAT, false, 4 * 2, pVertex);
GLES20.glVertexAttribPointer(_onscreenUVAttribute, 2, GLES20.GL_FLOAT, false, 4 * 2, pTexCoord);
GLES20.glEnableVertexAttribArray(_onscreenPositionAttribute);
GLES20.glEnableVertexAttribArray(_onscreenUVAttribute);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
}
Интересно, что ни один разработчик Android не попробовал! –
Может быть, если вы покажете нам еще код ... –
@ Jaa-c здесь вы идете! –