Content PipeLine

posted on 12 Jan 2008 09:18 by xnanoob  in Tutorials
สวัสดีค่า

วันนี้มาดูเรื่อง Content PipeLine กันดีก่านะค่ะ

แบบว่าก้อยังไม่ค่อยเข้าใจเท่าไหร่ ก้อมั่วๆ อ่านไปก่อนนะค่ะ เข้าใจผิดถูกยังไงบอกด้วยเด้อค่ะ

ก้อแบบว่าชื่อมันก้อบอกแล้วนะว่าเป็นแบบท่อน้ำ น้ำมันจะไหลมาพร้อมกันได้ ถ้ามีหลายท่อก้อคงทำงานแบบขนานกัน

Content PipeLine
กดที่ภาพเพื่อขยายร่าง (ภาพจาก กด จากกระทู้ของคุณ boheman )

สำหรับการโหลด Content แสดงได้ดังนี้

 ContentManager myManager = new ContentManager(GameServices);

model = myManager.Load<Model>("ship"); // ปกติใน xna 1.0



ก้อก่อนอื่นเราต้องทำการเพิ่ม Content เข้าไปในโปรเจ็คก่อน โดยจะเอาไฟล์ไหนเข้ามาใน Content นั้นต้องให้มี Importer รองรับไว้ด้วย ถ้าไม่ตรงกันกับ Importer ตัวนั้นก้อจะไม่สามารถโหลดเข้ามาได้

เหมือนมันมีท่อ โหลดลูกบอลเข้ามาในท่อเหลี่ยมไรแบบเนี้ย (มั่ง)



หรือไม่ก้อลองโหลด gif มา  ถ้าเราไม่ทำตัว Importer ของ gif ขึ้นมาเอง ใช้ native Importer ใน xna เอง
ก้อไม่สามารถโหลดเข้ามาได้ (จาก diagram ข้างบน จะเห็นว่าไม่มี gif รองรับเลย)

สำหรับใน version 2.0 นั้นการใช้งาน ContentPipe Line จะมีการแตกต่างกับ version 1.0 อยู่นิดหน่อย
ตอนที่เราจะใช้งาน คือใน xna 2.0 นั้นจะมีการกำหนด Directory ของการโหลดในโค้ดเป็นโฟลเดอร์ที่ชื่อว่า
Content ฉะนั้นปกติใน 1.0 เราสามารถตั้งชื่อไฟล์ได้เอง    แต่ใน 2.0 จะเหมือนคล้ายเป็น root directory

Content.RootDirectory = "Content";


เพราะงั้นของต่างๆ จึงต้องยัดในโฟลเดอร์ Content นะ



ประสิทธภาพ
ประสิทธภาพอาจจะเป็นแบบนี้(มั่งนะหรือเปล่า) คือสมมติ ถ้าคุณมีการโหลด Content 3 แบบ 3 ไฟล์ คือ .x , .png และ .FX  ในโค้ดก้อเป็นการเขียนเรียงกันไป 3 บรรทัด กำหนดให้การโหลดไฟล์แต่หละชนิดใช้เวลาทำงาน 10 Clocks สำหรับการประมวลผล

บรรทัดที่ 1 // load .x
บรรทัดที่ 2 // load .png
บรรทัดที่ 3 // load .FX

ถ้าเป็นตัวอื่นที่ไม่มีการจัดการ ContentPipeLine ทำ 3 บรรทัดด้านบนเสร็จก้อใช้เวลา 30 Clocks
แต่สมมติถ้ามี ContentPipeline ก้อน่าจะทำแบบขนานกันไปได้ เพราะมีการแยกท่อ อาจจะเสร็จที่ประมาณ 10 Clocks หรือ 12 Clocks ก้อน่าจะเสร็จ (มั่ง)


จบแระค่ะ บายค่ะ งุงิ

เอกสารอ้างอิง
http://blogs.msdn.com/xna/archive/2006/08/29/730168.aspx

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry