Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0

    DirectX 11 - Điểm nổi bật và Ebook Game Programming

    DirectX 11 CUỘC CÁCH MẠNG HÌNH ẢNH
    (*) Cuộc cách mạng hình ảnh Directx 11 ra đời với tham vọng tạo nên một cuộc cách mạng về hình ảnh, vượt xa directx 11 về tính hiện thực. Chúng ta hãy quan sát một hình ảnh trong game Crysis, một bộ mặt của directx 10 và gần như sẽ không có game directx 10 nào hình ảnh vượt qua được crysis



    (*) Hình ảnh khá đẹp tuy nhiên mức độ "đời thực" thì chưa cao. Các chi tiết như chiếc ôtô, tên lính, cái thùng phuy, các tán lá, các cây cối ở phía xa nhìn vẫn như hoạt hoạ, mỏng và không có cảm giác 3D sống động. Dù có thiết lập hình ảnh ở độ phân giải và khử răng cưa cao hơn thì hình ảnh cũng không khá lên là mấy. Đó là giới hạn của directx 10. Một phần lí do mà Nvidia không phát triển tiếp directx 10.1 trên các dòng GF9 của họ. Họ nhận ra cơ chế đồ hoạ cũ đã chết.

    (*) Một phần cốt lõi của directx 11 là tính toán và mô tả lại chính xác quỹ đạo của các tia sáng khi chúng tương tác với vật thể, hay tính toán trên từng tia sáng. Về bản chất là giống như những gì mắt chúng ta làm. Công nghệ này gọi là Ray-tracing được giới thiệu năm 1986 nhưng do nó ngốn quá nhiều tính toán nên chưa được sử dụng.

    (*) Trong tự nhiên, một nguồn sáng tạo ra một tia sáng mà cuối cùng đi đến một bề mặt làm ngắt quãng quá trình của nó. Có thể tưởng tượng tia sáng này như một dòng photon. Trong chân không hoàn hảo, tia sáng này sẽ đi thẳng. Trong hiện thực sẽ là hỗn hợp của các hiệu ứng khúc xạ, phản xạ, tán xạ, khúc xạ. Và tất cả các tia sáng tạo ra sau các quá trình ấy sẽ được mô tả lại để tạo nên các hình ảnh sống động như thật. Đó sẽ không phải là directx 11 nếu chưa kể đến công nghệ photon mapping và metropolis light transport. Photon mapping là phương pháp sử dụng đồng thời các quỹ đạo của tia sáng từ mắt đến vật thể và từ vật thể đến mắt có kể đến các hao tổn trên đường đi của chúng. Những tia sáng đi từ mắt vào cảnh quyết định các bề mặt hiệu dụng và phôton map sẽ ước lượng được các điểm bề mặt hiệu dụng, lưu trữ được các thông tin có thể sử dụng lại của ánh sáng, giảm tải số lượng tính toán.

    (*) Metropolis light transport là phương pháp bắt đầu bằng tìm kiếm các đường đi ngẫu nhiên trong không gian và khi tìm thấy một energy path nào đó thì sẽ sử dụng lại thông tin này bằng cách mở rộng vùng không gian xung quanh tia sáng.

    (*) Có thể trong các thế hệ card đồ hoạ tiếp theo của Nvidia và AMD sẽ có Ray-Tracing Processing Units (RPU’s). Thực tế là Ray-Tracing đã được nghiên cứu từ trước, vào năm 2007 đã có những báo cáo về một engine giúp các game PC được render bằng ray-tracing mà không cần khối lượng tài nguyên quá lớn.

    (*) Directx 11 sẽ mở ra một kỉ nguyên mới cho đồ hoạ, tiến sát tới hiện thực.


    Nguồn: "http://download123.vn/download-directx-11-cuoc-cach-mang-hinh-anh-283-news.aspx"

    __________________________________________________ __________________________________________________ _________________________________


    NHỮNG NÉT MỚI TRONG DirectX 11
    (*) Thế giới đồ họa đang chờ đón một “luồng gió” mới mà DirectX 11 hứa hẹn đem lại. Hi vọng với những cải tiến đáng kể, DirectX 11 sẽ giúp các nhà phát triển nhẹ nhàng hơn trong việc lập trình nhưng lại tăng hiệu quả xử lý.
    DirectX là tập hợp các giao diện lập trình ứng dụng (API) nhằm điều khiển các tác vụ liên quan đến đa phương tiện, đặc biệt là lập trình game và hình ảnh. Về nguồn gốc, tên của các API được bắt đầu bằng Direct, chẳng hạn như Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound… Cái tên DirectX được đặt chung cho tất cả các API này (trong đó X là tên của các API riêng biệt). Khi Microsoft cho phép phát triển thể loại game console, X được dùng trong tên Xbox để chỉ ra rằng, console được xây dựng trên công nghệ DirectX. Bắt đầu xuất hiện từ năm 1995 với phiên bản DirectX 1.0, sau hơn 14 năm nghiên cứu và phát triển, Microsoft đã phát triển công nghệ này lên phiên bản mới nhất hiện nay là DirectX 10.1 (nâng cấp từ DirectX 10). DirectX 10 chưa phải là hoàn hảo (khó lập trình và phải định nghĩa phần cứng), nhưng thực tế Microsoft đã tạo ra Direct3D 10 trọn vẹn. DirectX 10.1 ra đời để sửa chữa những sai lầm đó, chỉ có AMD đưa ra được bản nâng cấp API, trong khi đó NVIDIA thì cho rằng DirectX 10.1 vẫn không thực sự nâng cao được hiệu quả xử lý, vì vậy, họ nghĩ các nhà phát triển cần tăng tốc GPU vật lý và họ đã chọn cách tập trung vào việc này trong các cấu trúc đồ họa dòng GTX 200 mới nhất hiện nay. Và để nâng cấp, hoàn thiện hơn giao diện lập trình giúp cho các nhà phát triển game, đồ họa có thể lập trình dễ dàng hơn, tăng hiệu quả xử lý trên các giao diện đó, tháng 7/2009, Microsoft đã công bố chính thức phiên bản DirectX 11.

    (*) Các tập lệnh của API mới đang được Microsoft hoàn thiện và phiên bản cho người dùng cuối sẽ được chờ đón cùng với HĐH Windows 7 (cuối 2009 hay đầu năm 2010). Không như DirectX 10, DirectX 11 cho phép tương thích ngược với các phiên bản trước Windows Vista. Hi vọng rằng DirectX 11 sẽ không bị đối xử như DirectX 10 nhờ tính tương thích ngược và có vài tính năng tương thích cho cả phần cứng DirectX 9 và 10/10.1.

    Công nghệ đường ống DirectX 11

    Điều quan trọng của API mới là khả năng chỉnh sửa nội dung, cho phép các nhà phát triển tạo nhiều đối tượng phức tạp hơn và mang tính thực tế cao. Điều này phù hợp với sự thúc đẩy của Microsoft trong việc cải thiện đa hướng và hiệu năng, do khuynh hướng hiện tại là xây dựng đối tượng nhờ tăng độ phức tạp của các lưới tam giác và sau đó, giảm bớt số tam giác tùy theo sức mạnh của hệ thống cụ thể.


    Hình 1: Cấu tạo đường ống của Driect3D 11

    Để giải quyết vấn đề này triệt để, Microsoft giới thiệu 3 lớp mới trong công nghệ đường ống (pipeline) DirectX 11: Đổ bóng bề mặt (Hull Shader), công cụ phủ Tessellator và đổ bóng vùng (Domain Shader). Trong đó, đổ bóng bề mặt và đổ bóng vùng cũng bao gồm cả quá trình phủ Tessellator. Nếu bạn bỏ đi những công đoạn này, bạn sẽ có cấu trúc đường ống của DirectX 10, mặc dù có vài đặc điểm nhỏ khác làm cho chúng khác nhau về kỹ thuật.

    Bổ sung vào 3 lớp trên, quá trình đổ bóng điểm trong cấu trúc đường ống đã có vài thay đổi, cho phép tính toán đổ bóng (Compute Shader - CS) nhiều tác vụ đa năng. Theo ý kiến của các nhà phát triển game và ứng dụng, CS có nhiều cách sử dụng. Chỉ cần có một cách phân luồng cho một ứng dụng, thì sẽ có một cách dùng cho CS. (Xem hình 1)

    Công nghệ phủ (Tessellation)


    Công nghệ phủ đã xuất hiện ngay từ khi Microsoft công bố Xbox 360 vào cuối năm 2005 – khi Xenos GPU của ATI đã có đơn vị phủ phần cứng chuyên dụng. Việc bổ sung này nhằm cải thiện quá trình chỉnh sửa nội dung và cho phép các nhà phát triển cũng như chuyên gia đồ họa sáng tạo nhiều đối tượng thực tế hơn và phức tạp hơn mà không cần bộ nhớ đồ họa quá lớn.


    Hình 2: Tạo đối tượng với cấu trúc đường ống hiện tại

    Về cơ bản, một đối tượng khi ở xa sẽ ít chi tiết và ít các hình tam giác, nhưng khi tiến lại gần người xem thì số lượng tam giác và chi tiết sẽ tăng theo hàm mũ. Hình ảnh đẹp chỉ khi nó xuất toàn bộ, tổng số tam giác trung bình phải lớn hơn hằng số cho phép thì sẽ ít xuất hiện hiện tượng dừng hình, nhảy hình trong lúc hiển thị.

    Theo truyền thống, việc tạo đối tượng bắt đầu từ mô hình khung Sub-D, đến hoạt cảnh và ánh xạ phủ bề mặt trước khi một lưới đa giác áp dụng nó. Một khi lưới đã được áp dụng, nó được chia lại nhiều cấp bậc chi tiết (LOD – Level Of Detail) trước khi được gửi đến GPU. Các cấp bậc khác nhau có thể được sử dụng cho những lớp khác nhau của phần cứng hoặc chúng có thể được dùng khi nhân vật hay đối tượng của nội dung xa màn hình, bổ sung nhiều chi tiết hơn cho người xem, nhưng tốn càng ít “công sức” càng tốt.

    (Xem hình 2)

    Microsoft và AMD cho rằng Tessellator của Xbox 360 và cả Radeon HD 2000/3000/4000 đều không tương thích với DirectX 11, nhưng Tessellator của DirectX 11 có thể tương thích với tất cả các phần cứng khác đang có mặt trên thị trường. Tuy nhiên, một điểm tiến bộ là công cụ phủ của Radeon HD 4000 đã có vài thay đổi, cho phép lập trình viên truy xuất vào tính năng trong ứng dụng của DirectX 10 – Điều này là một bước phát triển so với đơn vị phủ trong của GPU dòng HD 2000 và 3000.


    Hình 3: Hull Shader trong tiến trình

    Mặc dù các nhà phát triển không thích dùng Tessellator cho các ứng dụng ra đời ngày nay, công nghệ phủ của RV7xx đã tỏ ra là một nền tảng hữu dụng vì nó cho phép các nhà phát triển và chuyên gia đồ họa làm thí nghiệm với công nghệ phủ trong một môi trường lập trình khá giống DirectX 11. Nói tóm lại, công nghệ đường ống đồ họa DirectX 11 là một tập hợp mẹ của DirectX 10 mà sự bổ sung chủ yếu là công nghệ phủ.

    Tuy công cụ phủ DirectX 11 mạnh mẽ và linh hoạt hơn các thành phần phủ của GPU AMD gần đây (bao gồm cả Xenos). Nhưng thật sự, Tessellator vẫn không thể lập trình được mà chỉ dựa vào thành phần Hull Shader (đổ bóng bề mặt) để được cung cấp thông tin phù hợp và sau đó, Domain Shader nhận dữ liệu phủ và xuất ra các đỉnh trước khi nó chuyển xuống các phần tiếp theo của cấu trúc đường ống.

    <font color="#FF0000">Công nghệ phủ có cả trong Hull Shader và Domain Shader


    Hull Shader là nơi tiến trình phủ một đối tượng được thiết lập – nó điều khiển các điểm của mảng rồi sau đó tính toán cấp độ phủ yêu cầu. Sau bước chuyển đổi cơ bản, các điểm điều khiển sẽ được chuyển vào Domain Shader – bộ phận phủ không thấy được các điểm điều khiển.

    Thay vào đó, công cụ phủ Tessellator được cung cấp một số TessFactor, về cơ bản sẽ cho biết cấp độ phủ được yêu cầu trên một miếng khảm cụ thể. Hull Shader cũng báo cho bộ phận phủ phương thức (mode) mà nó nên thực hiện – nhà phát triển có thể định rõ cách mà tiến trình phủ thực hiện công việc (mặc dù đơn vị phủ là tính năng cố định, nhưng có vài phương thức để lựa chọn).


    Hình 4: Hoạt động của công cụ phủ Tessellator

    Sau đó, Tessellator nhận những gì được cung cấp bởi Hull Shader rồi kết hợp các mảng để tạo yêu cầu hình học bổ sung. Khi quá trình này hoàn thành, các điểm vùng (domain point) và dữ liệu hình học sẽ xuất hiện.

    (Xem các hình 3, 4,5)

    Các điểm vùng được chuyển xuống Domain Shader (làm việc trên từng điểm cơ bản), khi đó bộ phận này sẽ nhận điểm vùng và tạo đỉnh cho các giai đoạn tiếp theo. Trong khi đó, dữ liệu hình học đi thẳng xuống lớp gốc của đường ống – lý do là dữ liệu này không cần đổ bóng, nhưng lại cần chuyển đổi.

    (Xem hình 6)

    Điều quan trọng ở đây là cả lớp phủ của đường ống không làm việc với các tam giác mà chỉ làm việc với các miếng khảm và điểm. Các miếng khảm sẽ mô tả đường cong hoặc vùng bề mặt bởi 4 cạnh. Tất nhiên, các mảng có thể được mô tả với những tam giác, nhưng điều đó không phổ biến, vì hầu hết các ứng dụng chỉnh sửa 3D đều làm việc với 4 cạnh. Đây là lần đầu tiên DirectX không làm việc với tam giác, đó là một bước tiến đáng kể.

    Tất cả những đặc điểm mô tả trên là bước tiến rõ rệt trong công nghệ đường ống của DirectX 11, hứa hẹn sẽ mang đến hiệu quả không ngờ khi bổ sung thật nhiều chi tiết cho công nghệ game tương lai. Tất nhiên, các nhà phát triển không phải sử dụng lớp này của đường ống nếu họ không muốn.

    Bộ đổ bóng Compute Shader


    Hình 5: Hoạt động của Domain Shader

    Compute Shader sẽ nhận dữ liệu từ Pixel Shader. Bộ đổ bóng tính toán mới này hỗ trợ tốt hơn cho nhiều hãng phần cứng khác nhau, gia tăng khả năng lập trình cho các GPU đa năng (GPGPU – General Purpose GPU) mà NVIDIA và AMD đang tích cực cải tiến trong những năm gần đây. Nhờ cải tiến Compute Shader, ngoài việc dựng hình, các GPU giờ đây thực hiện cả những tính toán khác, chẳng hạn như tạo hiệu ứng bóng mờ.

    Microsoft cho rằng các nhà phát triển sẽ cảm thấy dễ dàng hơn trong việc phát triển các ứng dụng game trong khi các phần cứng được tận dụng hết khả năng. Dự kiến, bộ phát triển phần mềm (Software Development Kit) sẽ được Microsoft phát hành trong thời gian tới.

    Hỗ trợ đa luồng

    Mặc dù kỹ thuật đa luồng (multi-threading) không còn mới trong công nghệ đường ống đồ họa nhưng đây là tính năng quan trọng cho DirectX 11. Thậm chí, nó trở nên quan trọng hơn khi sử dụng phần cứng DirectX10 cũng như cập nhật trình điều khiển (driver).

    CPU 2 nhân là xu thế hiện nay và 4 nhân bây giờ không còn là lựa chọn quá đắt cho game thủ hay những chuyên gia đồ họa; trong tương lai, 4 nhân sẽ thay thế 2 nhân như một xu thế tất yếu. Điều đáng ngạc nhiên là DirectX vẫn chưa thể xử lý đa luồng. Để “che đậy’” thiếu sót này, cả AMD và NVIDIA đưa ra các trình điều khiển đa luồng, nhưng thành công còn hạn chế vì bản chất API là đơn luồng. API của DirectX 11 đem lại cho lập trình viên khả năng điều khiển GPU từ CPU đa nhân. Những thay đổi trong mô hình API và mô hình trình điều khiển của DirectX 11 đã cải thiện việc tính toán của CPU. Việc truy cập các thiết bị không đồng bộ giờ đây đã được thực hiện thông qua hai tính năng chính của đối tượng thiết bị trong thư viện Direct3D 11.


    Hình 6: Tạo đối tượng với cấu trúc đường ống mới

    Cách để Microsoft đạt được điều này là tách một thiết bị Direct3D thành 3 giao diện riêng biệt: giao diện ngữ cảnh thiết bị (Device Context), giao diện ngữ cảnh trực tiếp (Immediate Context) và giao diện ngữ cảnh trì hoãn (Deferred Context). Immediate Context có một luồng trong khi giao diện Device Context và Deferred Context thì có nhiều luồng hơn, được chỉ định xếp hàng các tác vụ cho Immediate Context hoặc Render.

    Mỗi giao diện thiết bị có thể tải luồng tài nguyên khi và chỉ khi nó cần, trong khi giao diện ngữ cảnh trì hoãn (Deferred Context interface) hoạt động như một ngữ cảnh thiết bị đơn luồng cho các toán tử dựng hình tương lai, nó xếp hàng các lệnh gọi (hoặc Display Lists) trước khi chuyển chúng vào giao diện ngữ cảnh trực tiếp.

    Khi muốn tối ưu hoá phần cứng hỗ trợ DirectX 10, giao diện ngữ cảnh trì hoãn sẽ cần lập trình trên phần mềm thay vì phần cứng. Vì thế, giao diện ngữ cảnh trì hoãn sẽ không được chia luồng tự do trên phần cứng DirectX 10 và một luồng chuyên dụng sẽ phải được chỉ định đến ngữ cảnh trì hoãn ở cấp độ API.

    Liên kết đổ bóng động (Dynamic Shader Linkage)

    Một trong những vấn đề mà các nhà lập trình game đối mặt hiện nay là sự mở rộng và tính linh hoạt đổ bóng quá phức tạp. Ví dụ, nếu trong vài trường hợp cần nhiều shader thì một Uber Shader lớn thường được dùng vì nó kết nối được tất cả các shader cần thiết vào trong một đoạn mã (code), tối giản lập trình.

    Tuy nhiên, việc tối giản lập trình theo hướng này lại làm cho việc đổ bóng phức tạp vô cùng, nó không chỉ kém hiệu quả hơn các shader riêng lẻ mà còn khó bẫy lỗi. Giải pháp viết các shader chuyên dụng không những phù hợp cho tất cả các trường hợp mà còn phù hợp cho các lớp khác nhau của phần cứng. Giải pháp này lại trở nên phức tạp và tốn nhiều chi phí liên quan đến việc chuyển đổi các shader, vì vậy Uber shader là một tuỳ chọn dễ dàng nhất cho nhà lập trình trong viết mã dù chưa phải lý tưởng.

    Microsoft tin rằng câu trả lời cho vấn đề này là các thủ tục con (subroutine), cho phép các nhà lập trình liên kết các shader với nhau, các nhà lập trình có thể tạo các shader chuyên dụng cho các lớp khác nhau của phần cứng được chỉ định, trong khi đó lại giảm phần lớn việc sử dụng thanh ghi so với việc dùng một shader đơn lẻ để điều khiển tất cả. Hi vọng rằng, điều này làm cho các nhà lập trình có hứng thú hơn khi viết shader, nhưng không có nghĩa là sẽ ảnh hưởng trực tiếp đến chất lượng hình ảnh mà cụ thể là chất lượng đổ bóng.

    Cải thiện nén kết cấu (Texture Compression)

    Đã lâu kể từ khi Microsoft nâng cấp thuật toán nén kết cấu của DirectX, giờ đây Microsoft lưu ý đến những thiếu sót của việc hỗ trợ cho các định dạng kết cấu HDR (High Dynamic Range), khi đa kết cấu không chú ý đến giải pháp nén gốc.

    Để bổ sung những gì cần thiết, Direct3D 11 sẽ giới thiệu 2 định dạng kết cấu mới là BC6 (hay BC6H) và BC7. BC6 là một kết cấu định dạng cao nhưng chỉ tiếc là mất dữ liệu gốc khi nén, thay vào đó, nó hỗ trợ công nghệ nén 6:1 với tốc độ 16bpc (bits per channel), điều này mang lại hiệu quả nhưng chất lượng kết cấu chưa cao trong trường hợp sử dụng mở rộng dải sáng có độ nhạy cao (high-dynamic) và không thật sự còn nguyên gốc.

    Bên cạnh đó, BC7 là một định dạng kết cấu LDR (Low Dynamic Range), hỗ trợ tỷ lệ nén 3:1 RGB. BC7 có thể được sử dụng với chất lượng giảm nhẹ (4:1 và 3:1 như đã nói ở trên) nhưng vẫn đảm bảo ở mức cao.

    Hơn nữa, Microsoft cho rằng, giải nén kết cấu trong DirectX 11 phải được làm theo cách hoàn toàn chính xác với thông số kỹ thuật của API thì chất lượng giải nén kết cấu mới tăng lên nhiều. Cho đến khi DirectX 11 xuất hiện, vẫn còn thời gian cho các hãng cung cấp phần cứng điều chỉnh cách mà phần cứng hỗ trợ DirectX 10 (và các DirectX cũ hơn) điều khiển giải nén kết cấu.

    Tóm lại, thế giới đồ họa đang chờ đón một “luồng gió” mới mà DirectX 11 hứa hẹn đem lại. Hi vọng với những cải tiến đáng kể, DirectX 11 sẽ giúp các nhà phát triển nhẹ nhàng hơn trong việc lập trình nhưng lại tăng hiệu quả xử lý.



    Nguồn: "http://www.pcworld.com.vn/articles/cong-nghe/cong-nghe/2009/11/1194826hung-net-moi-trong-directx-11/"

    __________________________________________________ __________________________________________________ _________________________________

    Và đây là 2 cuốn ebook tiếng Anh mới sưu tầm được trên mạng khá là dày [IMG]images/smilies/daydreaming.gif[/IMG]
    - Beginning DirectX 11 Game Programming by Allen Sherrod, Wendy Jones

    - Introduction To 3D Game Programming With DirectX11 by Frank D.Luna

    [IMG]images/smilies/2.gif[/IMG]

    - - - Nội dung đã được cập nhật ngày 09-12-2014 lúc 08:53 PM - - -

    Đừng thấy tiếng Anh mà ngại gì nhá [IMG]images/smilies/daydreaming.gif[/IMG]. Đã có ggtranslate cực kì tiện lợi [IMG]images/smilies/daydreaming.gif[/IMG] Free Google Desktop Translator</font>

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    DirectX 11 thật đúng là cuộc cách mạng, nhưng đồng chí nào máy không " khủng " thì đừng có mà tơ tưởng nhé. Nếu cứ cố chạy thì đừng trách sao nó ù lỳ và tệ hơn DirectX 9 cả chục lần.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi MHoang
    DirectX 11 thật đúng là cuộc cách mạng, nhưng đồng chí nào máy không " khủng " thì đừng có mà tơ tưởng nhé. Nếu cứ cố chạy thì đừng trách sao nó ù lỳ và tệ hơn DirectX 9 cả chục lần.
    Có nặng hơn thật nhưng muốn tiến bộ bắt buộc phải thay đổi. Với ở đây DirectX 11 được nhắc đến trong việc học tập chứ chưa phải là chơi những game đồ họa khủng yêu cầu cao nên dù có nặng hơn thì chỉ học thôi cũng không ảnh hưởng gì nhiều [IMG]images/smilies/daydreaming.gif[/IMG]. Nói riêng về máy mình thì mặc dù dùng lâu, xuống cấp khá là nặng nhưng chạy DirectX 11 thấy vẫn ổn và chắc do lúc trước đó nó cũng tàn tạ sẵn ùi nên giờ cũng không thấy có khác biệt gì nhiều [IMG]images/smilies/thinking.gif[/IMG]

    - - - Nội dung đã được cập nhật ngày 11-12-2014 lúc 11:49 AM - - -

    k biết có ai cùng học cho vui k nhở [IMG]images/smilies/daydreaming.gif[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •