2017-01-19 8 views
0

Я хочу рисовать квадрат и нарисовать текст на GLSurfaceView предварительного просмотра камеры.использовать OpenGL нарисовать текст на android

первый я стараюсь рисовать Square

private void drawSquare() { 
    GLES20.glEnable(GLES20.GL_SCISSOR_TEST); 
    GLES20.glScissor(20, 300, 500, 50); 
    GLES20.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
    GLES20.glDisable(GLES20.GL_SCISSOR_TEST); 
} 

этот вызов метода на onDrawFrame(); и показать квадрат на предварительный просмотр камеры glsurfaceview.

и я пытаюсь нарисовать текст

public void GLText(GL10 gl) { 

    Bitmap bitmap = Bitmap.createBitmap(64, 64, Bitmap.Config.ARGB_4444); 
    Canvas canvas = new Canvas(bitmap); 
    bitmap.eraseColor(0); 

    Paint paint = new Paint(); 
    paint.setTextSize(18); 
    paint.setAntiAlias(true); 
    paint.setARGB(0xff, 0xff, 0xff, 0xff); 
    paint.setTextAlign(Paint.Align.LEFT); 
    paint.setTextScaleX(0.5f); 
    canvas.drawText("testGLText", 0.f, 15.f, paint); 

    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0); 

    bitmap.recycle(); 
} 

и показать текст. но Backgroud зеленый цвет

enter image description here

почему фон зеленый цвет? , пожалуйста, помогите мне.

спасибо.

ответ

1

Я не вижу ваши тексты рисунков кода, используя openGL api, но нет причин устанавливать ваш зеленый цвет fbo.

GLES20.glEnable(GLES20.GL_SCISSOR_TEST); 
    GLES20.glScissor(20, 300, 500, 50); 
    GLES20.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); // here you initialize your fbo color as black 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
    GLES20.glDisable(GLES20.GL_SCISSOR_TEST); 

Если вы хотите нарисовать квадрат, выполните следующие действия.

glclearcolor(...); //Actually, glclearColor() and glclear() are not required. 
glclear(); 
glviewport(....); 
gluseprogram() // a shader program you compiled 
bindVBO() // VBO you already set in this case, it saves four vertices 
glactivetexture() and bindtexture() 
gluniform1f(..) // for the texture 
gldrawarray(...) or gldrawelement(...) 
+0

Ваш источник - это квадрат ничьи. квадрат не зеленый фон. только текстовая ничья. – chohyunwook

+0

@chohyunwook вы не получите, как рисовать квадрат. Приведенный выше код никогда не рисует квадрат. gldraw ****() может рисовать квадрат, поэтому я упомянул «Я не вижу фактического кода чертежа» – Sung

+0

@chohyunwook Ответ обновлен. Кажется, вы никогда не используете OpenGL. Вы просто используете холст для рисования текстов и предварительного просмотра камеры для рисования каждой рамки камеры. Оба могут быть выполнены с OpenGL. Однако вам не нужно использовать OpenGL, если вам это не нужно. – Sung

 Смежные вопросы

  • Нет связанных вопросов^_^