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

你不能用简单的纹理来纹理一维线,因为据我所知,没有办法获得它当前正在绘制的片段着色器的线的当前像素位置。

于 2012-09-03T20:03:49.797 回答
0

要在一条线上绘制纹理,您必须使用PointSprites或绘制带纹理的小四边形。在我的情况下,我使用Triangle_Strips并纹理化了它们,因为我的情况下的线可能很小并且看起来仍然像一条线。

如果有人有更好的解决方案或已实施上述解决方案,请随时发布答案!

于 2012-10-09T16:53:35.737 回答