OpenGL: Как нарисовать куб в OpenTK? - PullRequest
1 голос
/ 20 марта 2011

glutWireCube () - это функция для рисования куба в C ++. Как насчет OpenTK? Любая функция была использована для замены этого?

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

glutWireCube не является функцией OpenGL. Это часть библиотеки GLUT, которую часто ошибочно принимают за участие в OpenGL.

1 голос
/ 27 марта 2015

Эта функция рисует сплошной куб, используя старый конвейер с фиксированными функциями, измените его для своих нужд.Для краткости я написал декларации переменных внутри функции, но вы должны убрать их из функции, если вы хотите большей производительности.Я также рекомендовал бы переписать функцию, чтобы вместо нее использовать GL.DrawElements ().

    private void DrawBox(float size)
    {
        float[,] n = new float[,]{
            {-1.0f, 0.0f, 0.0f},
            {0.0f, 1.0f, 0.0f},
            {1.0f, 0.0f, 0.0f},
            {0.0f, -1.0f, 0.0f},
            {0.0f, 0.0f, 1.0f},
            {0.0f, 0.0f, -1.0f}
        };
        int[,] faces = new int[,]{
            {0, 1, 2, 3},
            {3, 2, 6, 7},
            {7, 6, 5, 4},
            {4, 5, 1, 0},
            {5, 6, 2, 1},
            {7, 4, 0, 3}
        };
        float[,] v = new float[8,3];
        int i;

        v[0,0] = v[1,0] = v[2,0] = v[3,0] = -size / 2;
        v[4,0] = v[5,0] = v[6,0] = v[7,0] = size / 2;
        v[0,1] = v[1,1] = v[4,1] = v[5,1] = -size / 2;
        v[2,1] = v[3,1] = v[6,1] = v[7,1] = size / 2;
        v[0,2] = v[3,2] = v[4,2] = v[7,2] = -size / 2;
        v[1,2] = v[2,2] = v[5,2] = v[6,2] = size / 2;

        GL.Begin(BeginMode.Quads);
        for (i = 5; i >= 0; i--) {
            GL.Normal3(ref n[i, 0]);
            GL.Vertex3(ref v[faces[i, 0], 0]);
            GL.Vertex3(ref v[faces[i, 1], 0]);
            GL.Vertex3(ref v[faces[i, 2], 0]);
            GL.Vertex3(ref v[faces[i, 3], 0]);
        }
        GL.End();
    }
...