โอ้วหลังจากไม่ได้ตาม technology ใหม่ๆ วันนี้ วันที่ต้องศึกษาของใหม่ก็มาถึงแล้ว มันคือ Windows Presentation Foundation นั่นเอง มันคืออะไรละลองไปเปิด wiki กันเอาเองนะ แต่ที่รู้ๆคือมันก็ออกมาได้พักนึงแล้ว พอลองศึกษาดูก็มีส่วนคล้่ายกับ XUL ของ Mozilla ในแง่ของการใช้ XML เพื่อ render user interface นั่นเอง และสามารถควบคุมหรือตอบโต้กับ user โดยใช้ภาษาในกลุ่ม .net ได้ feature ต่างๆของ .net ก็มีมากันครบ เจ้า XML ของ WPF ที่ชื่อว่า XAML นี่แหล่ะที่มาแทน Window Form ของ .net จะบอกว่ามาแทนก็ไม่เชิง ยังไงดี อธิบายไม่ถูก เอาเป็นว่าถ้าสร้าง UI ด้วย XAML แล้วก็ไม่ต้องสร้าง Window Form อีก เพราะว่ามันซ้ำซ้อนกัน แต่ code ที่อยู่ข้างหลัง (code-behind) ก็ยังต้องเขียนอยู่นะ
งานมีอยู่ว่าต้องทำ Render Engine ที่มีอยู่แล้วให้สามารถทำงานกับ WPF ได้ โดย version หลังๆนี้เองที WPF มี class D3DImage ไว้สำหรับให้ Direct3D9 ทำงานรjวมกันได้ แล้ว D3D10 ละ ทำไง อันนี้ไม่รู้ครับ
เพราะเจ้า class ที่พูดถึงนี้เองแหล่ะ ที่ทำให้การ integrate render engine ลง WPF นั้นแสนจะง่ายดายเหลือเกิน ก็แค่ wrap engine ให้เป็น DLL แล้วก็ให้ดึง surface ของที่เรา render เอาไว้ออกมาให้ D3DImage แค่นี้แหล่ะ แล้ว D3DImage นี่มัน inherit มาจาก ImageSource หนะ ที่นี้ตัวไหนที่ใช้ ImageSource ได้ ก็ render surface จาก D3D9 ได้นั้นเอง concept ง่ายๆ แบบนี้เลย
นี่ถ้าเป็นยุคเก่ากว่านี้คงต้อง host ActiveX ไม่ก็ให้ host HWND แล้วให้ D3D9 render ลงไป ซึ่งมันเป็นวิธีที่ไม่ค่อยจะดีนัก จะติดปัญหาเรื่อง Air space (ศัพท์เทพ ไปหาเอาเองว่ามันคืออะไรนะ) ก็คล้ายกับให้ D3D9 render ลงหน้าต่าง MSN หนะแหล่ะ คิดดูว่ามันจะทุลักทุเลขนาดไหน
งานครั้งนี้ทำให้ต้องกลับมาจับ C# อีกครั้ง โดย C# app ที่เขียนก่อนหน้านี้ก็คือ ray tracing กะ 2d animation editor ก็สามปีมาแล้วละ
… ต่อไปก็ WCF สินะ เออ WPF ยังไม่คล่่องเลย HAHA!!