Vì vậy, trong cả D3D và OpenGL có khả năng vẽ từ bộ đệm chỉ mục.3 bộ đệm chỉ mục
Định dạng tệp OBJ tuy nhiên có gì lạ. Nó xác định một loạt các đỉnh như:
v -21.499660 6.424470 4.069845 v -25.117170 6.418100 4.068025 v -21.663851 8.282170 4.069585 v -21.651890 6.420180 4.068675 v -25.128481 8.281520 4.069585
Sau đó, nó xác định một loạt các normals như ..
vn 0.196004 0.558984 0.805680 vn -0.009523 0.210194 -0.977613 vn -0.147787 0.380832 -0.912757 vn 0.822108 0.567581 0.044617 vn 0.597037 0.057507 -0.800150 vn 0.809312 -0.045432 0.585619
Sau đó, nó xác định một loạt các coords tex như
vt 0.1225 0.5636 vt 0.6221 0.1111 vt 0.4865 0.8888 vt 0.2862 0.2586 vt 0.5865 0.2568 vt 0.1862 0.2166
THEN nó chỉ định "khuôn mặt" trên mô hình như:
f 1/2/5 2/3/7 8/2/6 f 5/9/7 6/3/8 5/2/1
Nơi chúng tôi đang v/t/n số đầu tiên là một chỉ mục vào mảng đỉnh, thứ hai là chỉ mục vào mảng phối hợp tex, thứ ba, thành mảng chuẩn.
Vì vậy, trong cố gắng để render này với bộ đệm đỉnh,
Trong OpenGL Tôi có thể sử dụng glVertexPointer
, glNormalPointer
và glTexCoordPointer
để thiết lập con trỏ cho mỗi đỉnh, bình thường và kết cấu phối hợp các mảng tương ứng .. nhưng khi nói đến xuống để vẽ với glDrawElements
, tôi chỉ có thể chỉ định ONE đặt chỉ mục, cụ thể là các chỉ mục mà nó sẽ sử dụng khi truy cập các đỉnh.
Ok, sau đó làm gì? Tôi vẫn có bộ chỉ mục để truy cập.
Trong D3D của nó cũng tương tự - Tôi có thể thiết lập 3 dòng: một cho đỉnh, một cho texcoords, và một cho normals, nhưng khi nói đến việc sử dụng IDirect3DDevice9 :: DrawIndexedPrimitive, tôi vẫn có thể chỉ định ONE bộ đệm chỉ mục, sẽ lập chỉ mục vào mảng đỉnh.
Vì vậy, nó là thể để vẽ từ bộ đệm đỉnh sử dụng mảng chỉ số khác nhau cho mỗi người trong số các đỉnh, texcoord, và bộ đệm bình thường (DÙ D3D hoặc OpenGL), hoặc tôi phải tạo một mảng xen kẽ đơn và sau đó truy cập CNTT?
có thể trùng lặp của [Hiển thị lưới với nhiều chỉ mục] (http://stackoverflow.com/questions/11148567/rendering-meshes-with-multiple-indices) –