Main webboard   »   Irrlicht
 ย้อนกลับ  |  ตั้งกระทู้ใหม่  
Started by
Topic:   บทที่ 2 เริ่มต้นการเขียนเกมสามมิติ  (Read: 1306 times - Reply: 0 comments)   
saruch (Admin)

Posts: 14 topics
Joined: 25/1/2553

บทที่ 2 เริ่มต้นการเขียนเกมสามมิติ
« Thread Started on 26/1/2553 22:22:00 IP : 110.164.88.154 »
 

ใน Folder ของ irrlicht ที่เรา setup ลงไปนั้นจะมีโฟลเดอร์ ที่ชื่อว่า irrAppWizard2005 ให้เข้าไปข้างในแล้วเปิดไฟล์ .vcproj ขึ้นมาครับ เพื่อนำมาเริ่มใช้ในการเขียนเกม(copyตัวเดมเก็บไว้ด้วยนะครับ เอาไว้ใช้เวลาจะทำ projectใหม่) หลังจากเปิดมาให้เรากด F5 เพื่อ Run โปรแกรมจะพบว่าหน้าจอเป็น สีดำเนื่องจากเรายังไม่ได้ทำการเขียนโค้ดใดๆลงไป ก่อนที่เราจะทำการเขียนเกมนั้น ผมอยากจะอธิบายหลักการเขียนเกมง่ายๆ 3ขั้นตอนดังนี้

1.เปิดเข้าสู่โหมดเกม3มิติ

2.ประมวลผลเกม

3.ปิดโหมดเกม

ซึ่งทั้ง 3ตอนนี้เป็นหัวใจหลักของการเขียนเกมเลยทีเดียวครับ ต่อไปเรามาดูโค้ดโปรแกรมตามหละกการที่ผมบอกไว้กันครับ

 

1.เปิดเข้าสู่โหมดเกมสามมิติ

ให้ดูบรรทัดที่ 23 จะมีฟังชั่น init() มีหน้าที่จองจำmemmoryที่เราต้องการใช้ภายในเกม เราเกมของเราต้องการโหลดโมเดล ฉาก เพลง ให้มาเขียนในฟังชั่นนี้ครับ ต่อจากที่เขียนว่า //TODO: Initialize your own irr objects here

void init()
{
memset( &g_engine, NULL, sizeof(engine_t) );
g_engine.deviceType = video::EDT_DIRECT3D9;
g_engine.windowSize = core::dimension2d<s32>(640, 480);
g_engine.bits = 16;
g_engine.fullscreen = 0;
g_engine.receiver = &g_input;
setupEngine( &g_engine );
g_input.init( );
// TODO: Initialize your own irr objects here
}

2.ประมวลผลเกม

ในบรรทัดที่ 51 ฟังชั่น doframe() ภายในฟังชั่นนี้มีการทำงานเป็น loop ซึ่งมีไว้ในการประมวลผลหรือการทำซ้ำ

void doframe()
{
// TODO: Add code to draw your objects during each frame
}

3.ปิดโหมดเกม

ในบรรทัดที่ 41 ฟังชั่น deInit() ฟังชั่นนี้มีหน้าที่ในการคืนmemmoryที่จองจำไว้ในส่วนขั้นตอนที่ 1 แต่ต้องจำไว้ในดีนะครับ มิฉะนั้นเกมของคุณอาจจะมีปัญหาเรื่องความจำภายหลังได้

void deinit()
{
// TODO: Destroy your irr objects here
freeEngine( &g_engine );
}

 

 

เอาละครับทีนี้เราจะมาอธิบายคำสั่งต่างๆ ของโปรแกรมกัน ผมจะอธิบายเฉพาะส่วนหลักๆที่จำเป้นนะครับ ส่วนรายละเอียดปลีกย่อยไม่เข้าใจที่ไหนสอบถามได้นะครับ

 

void init()
{
memset( &g_engine, NULL, sizeof(engine_t) );
g_engine.deviceType = video::EDT_DIRECT3D9;
g_engine.windowSize = core::dimension2d<s32>(640, 480);
g_engine.bits = 16;
g_engine.fullscreen = 0;
g_engine.receiver = &g_input;
setupEngine( &g_engine );
g_input.init( );
// TODO: Initialize your own irr objects here
}

 

g_engine.deviceType = video::EDT_DIRECT3D9;

ส่วนนี้มีไว้กำหนด driverให้กับเกมมีดังนี้ครับ

Direct3D 9.0c = video::EDT_DIRECT3D9
Direct3D 8.1 = video::EDT_DIRECT3D8
OpenGL 1.5 = video::EDT_OPENGL
Software Renderer = video::EDT_SOFTWARE
Burning's Software Renderer = video::EDT_BURNINGSVIDEO
NullDevice = video::EDT_NULL

จากด้านบนก็มีไดร์เว่อร์ให้เลือกใช้มากมาย ซึ่งความสามารถของแต่ละตัวก็ต่างกันออกไป เช่น DirectX และ openGL สามารถใช้ความสามารถของการ์ดจอเพื่อคำนวนvertexและpixel shaderได้

 

g_engine.windowSize = core::dimension2d<s32>(640, 480);

เป็นการกำหนดความละเอียดของหน้าจอเกมเราครับ

 

g_engine.bits = 16;

เป็นการกำหนดจำนวนสีที่จะแสดงผลบนหน้าจอ

g_engine.fullscreen = 0;

จะแสดงผลเต็มจอหรือไม่ 1=yes ,0=no ก็คือ windows modeนั้นเอง

 

เท่านี้เราก็พร้อมที่จะลงมือเขียนเกมแล้ว

ส่วนวิธีการในขั้นต่อไปนั้นอยู่ในบทต่อไปครับ......

 


 
   Link to Post - Back to Top

Bookmark and Share

กรุณาเข้าสู่ระบบหรือสมัครสมาชิกก่อนโพสข้อความค่ะ
»
คลิ๊กที่นี่
   Main webboard   »   Irrlicht
 ย้อนกลับ  |  ตั้งกระทู้ใหม่  
Advertising Zone    Close

ด้วยความปราถนาดีจาก "สยามทูเว็บดอทคอม" และเพื่อป้องกันการเปิดเว็บไซต์เพื่อหลอกลวงขายของ โปรดตรวจสอบร้านค้าให้แน่ใจก่อนตัดสินใจซื้อของทุกครั้งนะคะ    อ่านเพิ่มเติม ...