2017-01-19 18 views
0

GLSurfaceViewカメラプレビューで四角形を描画し、テキストを描画します。最初androidでOpenGL描画テキストを使用する

私は、正方形

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

を描き、テキストを表示してみてください。しかし、その背景色緑

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を使用する必要がない場合はOpenGLを使用する必要はありません。 – Sung

関連する問題