2012-09-03 22 views
2

특정 텍스처로 선을 그릴 때 가장 좋은 방법은 무엇입니까?OpenGL ES 2.0 - 텍스처로 선 그리기?

지금 당장 나는 다른 Primitive 대신에 단순히 선을 그어 Texture로 Line을 그리려고합니다.

setupMandatoryHandlers(shader); 

    GLES20.glEnableVertexAttribArray(positionHandler); 
    GLES20.glVertexAttribPointer(positionHandler, COORDS, GLES20.GL_FLOAT, false, STRIDE, vertexBuffer); 

    if (texture != null) 
     setupTextureData();  

    GLES20.glUniform4fv(colorHandler, 1, color, 0); 

    GLES20.glUniformMatrix4fv(MVPMatrixHandle, 1, false, orthoMatrix, 0);  
    GLES20.glDrawElements(drawType, indices.length, GLES20.GL_UNSIGNED_SHORT, indexBuffer); 

    GLRenderer.CheckGLError("Draw Elements");  

    GLES20.glDisableVertexAttribArray(positionHandler); 

    if (texture != null) 
     GLES20.glDisableVertexAttribArray(texCoordHandler); 

텍스처를 사용하여 선을 그릴 때 가장 효율적인 방법입니까? 아니면 다른 곳을 찾아야합니까? 줄에 glDrawElements 대신 glDrawArrays을 사용해야합니까?

+0

OpenGL에 대해 전혀 몰라서 질문을 읽지는 않았지만 ... OpenGL에서 2 차원 라인이 아니며 텍스처가 없습니다. – Alex

+0

2 차원 기본 요소에는 텍스처가있을 수 있습니까? 그렇게 쿼드를 그리는 방법입니다. –

+0

죄송합니다. 1 차원 (길이 만)을 의미했습니다. – Alex

답변

0

라인에 텍스처를 그리려면 PointSprites을 사용하거나 작은 텍스처 Quads를 그려야합니다. 내 경우에는 Triangle_Strips을 사용했고 질감이있는 케이스는 내 케이스의 라인이 작아서 라인과 정확히 같아 보이기 때문입니다.

누구든지 더 나은 해결책을 가지고 있거나 위의 구현을 완료하면 답변을 게시 할 수 있습니다.

0

단순한 텍스처로 1D 라인을 텍스처 할 수 없습니다. 알고있는 한 현재 라인의 현재 픽셀 위치를 현재 그리는 프래그먼트 셰이더로 가져올 방법이 없기 때문입니다.

+1

사실입니다. 멀티 샘플링이 없다고 가정하면 gl_FragCoord.xy는 픽셀 위치를 0..1 좌표로 지정합니다. 뷰포트 (너비, 높이)로 곱하면 픽셀 위치를 얻습니다. –

+0

그래서 대체 무엇입니까? –

+0

'gl_FragCoord.xy'를 사용해 보시고이 좌표로'sampler2D'에서 텍스처 색상을 얻을 수 있습니다. – dragostis