2011-03-20 8 views

답변

2

glutWireCube는 OpenGL 기능이 아닙니다. GLUT는 종종 OpenGL에 속하는 것으로 오해되는 라이브러리입니다.

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(); 
    } 
관련 문제