Content PipeLine
posted on 12 Jan 2008 09:18 by xnanoob in Tutorials
สวัสดีค่า
วันนี้มาดูเรื่อง Content PipeLine กันดีก่านะค่ะ
แบบว่าก้อยังไม่ค่อยเข้าใจเท่าไหร่ ก้อมั่วๆ อ่านไปก่อนนะค่ะ เข้าใจผิดถูกยังไงบอกด้วยเด้อค่ะ
ก้อแบบว่าชื่อมันก้อบอกแล้วนะว่าเป็นแบบท่อน้ำ น้ำมันจะไหลมาพร้อมกันได้ ถ้ามีหลายท่อก้อคงทำงานแบบขนานกัน

กดที่ภาพเพื่อขยายร่าง (ภาพจาก กด จากกระทู้ของคุณ boheman )
สำหรับการโหลด Content แสดงได้ดังนี้
ก้อก่อนอื่นเราต้องทำการเพิ่ม 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 นะ

ประสิทธภาพ
ประสิทธภาพอาจจะเป็นแบบนี้(มั่งนะหรือเปล่า) คือสมมติ ถ้าคุณมีการโหลด 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
วันนี้มาดูเรื่อง 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
Tags: contentpipeline, pipeline, xna, xnanoob1 Comments







