具有三角形条带的OpenGL ES 2.0网格线

时间:2013-11-15 16:20:02

标签: opengl-es-2.0

我需要在OpenGL ES 2.0中绘制一个10 x 10网格。三角条是最好的方法吗?你怎么画这个而不画对角线?我提出的所有搜索都会显示绘制了对角线的网格线,但这会破坏目的。

我只是使用了一堆线来绘制网格,但是我无法将其转换为一个单元。这是正确的方法,但我没有正确执行它?还是有更好的方法,比如三角形条?谢谢!

    // draw the horizontal gridlines
    for (i=0; i<12; i++) {
        modelViewMatrixRight = GLKMatrix4MakeTranslation(0.0f, 1.0f/11.0f*(float)i - 0.5f, -2.0f);
//        modelViewMatrixRight = GLKMatrix4Rotate(modelViewMatrixRight, GLKMathDegreesToRadians(-45.0f), 0.0f, 0.0f, 1.0f);

        _modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrixRight, modelViewMatrixRight);

        glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);
        glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);
        glUniform4fv(uniforms[UNIFORM_COLOR_VECTOR], 1, _color);        

        glBindVertexArrayOES( [my_line[i] getVertexArray] ); // make this line the current object
        [my_line[i] render];
    }

    // draw the vertical gridlines
    for (i=12; i<24; i++) {
        modelViewMatrixRight = GLKMatrix4MakeTranslation(0.5f - 1.0f/11.0f * (float) (i-12), 0.0f, -2.0f);
        modelViewMatrixRight = GLKMatrix4Rotate(modelViewMatrixRight, GLKMathDegreesToRadians(90.0f), 0.0f, 0.0f, 1.0f);
        modelViewMatrixRight = GLKMatrix4Rotate(modelViewMatrixRight, GLKMathDegreesToRadians(60.0f), 1.0f, 0.0f, 1.0f);


        _modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrixRight, modelViewMatrixRight);

        glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);
        glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);
        glUniform4fv(uniforms[UNIFORM_COLOR_VECTOR], 1, _color);

        glBindVertexArrayOES( [my_line[i] getVertexArray] ); // make this line the current object
        [my_line[i] render];

    }

0 个答案:

没有答案