glutWireCube()是用C ++绘制多维数据集的函数,在OpenTK中怎么样?任何函数用于替换?
答案 0 :(得分:2)
glutWireCube不是OpenGL功能。它是GLUT的一部分,一个库经常被误认为是OpenGL的一部分。
答案 1 :(得分:1)
此函数使用旧的固定功能管道绘制实体立方体,根据需要进行修改。 为简洁起见,我在函数内部编写了变量声明,但如果想要更高的性能,则应将它们移出函数。我还建议重写函数以使用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();
}