OpenGL ES 2.0 - 用纹理绘制线条?

时间:2012-09-03 13:56:08

标签: java android opengl-es-2.0

绘制具有特定纹理的线条的最佳方法是什么?

现在我正在尝试通过简单地绘制线条而不是另一个原始图形来绘制带纹理的线条。

    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作为行吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

要在一条线上绘制纹理,您必须使用PointSprites或绘制小纹理四边形。在我的情况下,我使用Triangle_Strips并对其进行纹理处理,因为我的情况下的线条可能很小,看起来仍然像一条线。

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