2008-08-04 32 views
12

Tôi muốn hiển thị ~ 100 khối nổi bằng cách sử dụng DirectX hoặc OpenGL.Hiển thị 100 khối nổi bằng DirectX HOẶC OpenGL

Tôi đang tìm một số mã nguồn mẫu hoặc mô tả về kỹ thuật. Tôi biết loại điều này là dễ dàng cho bạn hoàn thành 'bậc thầy' 3D ra khỏi đó, nhưng tôi có đủ rắc rối nhận được ngay cả một khối lập phương để hiển thị chính xác.

Tôi đã chải lưới cho một loạt tốt các hướng dẫn và mặc dù họ nói về làm thế nào để làm 3D nguyên thủy, những gì tôi không thể tìm thấy thông tin về làm thế nào để làm một số lượng lớn 3D nguyên thủy - cubes, spheres, pyramids , và kể từ đó trở đi.

Trả lời

7

Bạn nói rằng bạn có đủ sự cố khi nhận một khối lập phương để hiển thị ... vì vậy tôi không chắc liệu bạn có một hiển thị hay không.

Về cơ bản ... hãy đặt mã của bạn để viết một khối lập phương trong một hàm, sau đó chỉ cần gọi hàm đó 100 lần.

void DrawCube() 
{ 
    //code to draw the cube 
} 

void DisplayCubes() 
{ 
    for(int i = 0; i < 10; ++i) 
    { 
     for(int j = 0; j < 10; ++j) 
     { 
      glPushMatrix(); 
      //alter these values depending on the size of your cubes. 
      //This call makes sure that your cubes aren't drawn overtop of each other 
      glTranslatef(i*5.0, j*5.0, 0); 
      DrawCube(); 
      glPopMatrix(); 
     } 
    }    
} 

Đây là phác thảo cơ bản về cách bạn có thể thực hiện việc này. Nếu bạn muốn một cái gì đó hiệu quả hơn hãy nhìn vào danh sách hiển thị đôi khi bạn có những điều cơ bản đã tìm ra :)

6

Chỉ cần sử dụng glTranslatef (hoặc tương đương DirectX) để vẽ hình lập phương bằng cùng một mã, nhưng di chuyển điểm tương đối mà bạn vẽ nó. Có lẽ có một cách tốt hơn để làm điều đó mặc dù, tôi là khá mới để OpenGL. Hãy chắc chắn để thiết lập quan điểm của bạn để bạn có thể nhìn thấy tất cả.

6

Vâng, nếu bạn đang hiệu quả bạn sẽ ném tất cả mọi thứ vào cùng một bộ đệm đỉnh, nhưng tôi không nghĩ vẽ 100 hình khối sẽ đẩy bất kỳ GPU nào được sản xuất trong 5 năm qua, vì vậy bạn nên làm theo các đề xuất ở trên.

Viết một đường cơ bản thông qua trình đổ bóng đỉnh, tô bóng, tuy nhiên bạn mong muốn trong trình đổ bóng pixel. Hoặc là vượt qua trong một ma trận thế giới và làm các bản dịch trong đổ bóng đỉnh, hoặc chỉ tính toán các vị trí đỉnh không gian trên thế giới ở phía CPU (làm điều này nếu hình khối của bạn sẽ cố định).

Bạn có thể nhận được sự ưa thích và làm geometry instancing v.v., nhưng chỉ nhận được những điều cơ bản trước tiên.

Các vấn đề liên quan