2

特定のテクスチャで線を描くための最良のアプローチは何ですか?

現在、別のプリミティブの代わりに線を描画するだけで、テクスチャを使用して線を描画しようとしています。

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

これは、テクスチャを使用して線を描画する最も効率的な方法ですか、それとも別の場所を探す必要がありますか?glDrawArrays行の代わりに使用する必要がありglDrawElementsますか?

4

2 に答える 2

0

ライン上にテクスチャを描画するには、PointSprites小さなテクスチャ クワッドを使用するか描画する必要があります。Triangle_Strips私の場合、線が小さくても線のように見える可能性があるため、それらを使用してテクスチャを付けました。

誰かがより良い解決策を持っているか、上記を実装した場合は、お気軽に回答を投稿してください!

于 2012-10-09T16:53:35.737 に答える
0

私の知る限り、現在描画しているフラグメント シェーダーのラインの現在のピクセル位置を取得する方法がないため、単純なテクスチャで 1D ラインをテクスチャリングすることはできません。

于 2012-09-03T20:03:49.797 に答える