Posts Tagged ‘3d’

จากตัวอย่างในการทำ Graphic Simulation คราวที่แล้ว เราพบว่าการที่ต้องมาไล่คำนวนและวาดเม็ดกระสุนใหม่หมดตั้งแต่แรก ในทุก ๆ เฟรมที่แสดงผล(Render)ออกมาจะเกิดปัญหาคอขวดขึ้น โดยภาระส่วนใหญ่จะไปตกอยู่ที่การคำนวนอย่างหนักของ CPU ทำให้โปรแกรมของเราทำงานช้าลงเรื่อย ๆ
มาคราวนี้เราจะแก้ป้ญหานี้โดยเรียกใช้การแคช ซึ่งจะเก็บรายละเอียดที่วาดเสร็จแล้วไว้ใน บ่อพักข้อมูล(Buffer) เพื่อเรียกใช้งานได้อย่างรวดเร็วทันทีทันใด โดยในตัวอย่างนี้เราจะทำการแคชทุก ๆ 350 เฟรม
ทำได้โดยการดัดแปลงโค้ดดังนี้

#คำสั่งโปรแกรมภาษาไทยธอน
กล่องของฉัน = วัตถุสองมิติ.กล่องสองมิติ(1,1)
กล่องของฉัน.โหมดการวาด = GL_LINE_LOOP
กล่องของฉัน.ใช้พื้นผิว = เท็จ
วงกลมของฉัน = วัตถุสองมิติ.วงกลมสองมิติ(1)
ระยะแคช = 350

คลาส กระสุน:
	นิยาม __เริ่ม__(ตน,x,y,เข้าเป้า):
		ตน.x = x
		ตน.y = y
		ตน.เข้าเป้า = เข้าเป้า

	นิยาม วาด(ตน):
		glBegin(GL_POINTS)
		ถ้า ตน.เข้าเป้า:
			glColor3f(1.0,0.2,0.2)
		นอกจากนั้น:
			glColor3f(0.2,1.0,0.2)
		glVertex2f(ตน.x,ตน.y)
		glEnd()


 อ่านต่อ...
Advertisements

ตามที่สัญญาเอาไว้่ ลองมาดู Simulation ของการหาค่า PI ด้วย วิธีการแบบ Monte Carlo โดยเป็น Visual Simulation กันครับ
(โปรแกรมที่ใช้ในการทำ Simulation นี้ ต้องเป็น Thaithon version 1.09 ขึ้นไป ดาวน์โหลดได้ ที่นี่ https://peacedev.wordpress.com/download/ เลยครับ)

#คำสั่งโปรแกรมภาษาไทยธอน

กล่องของฉัน = วัตถุสองมิติ.กล่องสองมิติ(1,1)
กล่องของฉัน.โหมดการวาด = GL_LINE_LOOP
กล่องของฉัน.ใช้พื้นผิว = เท็จ
วงกลมของฉัน = วัตถุสองมิติ.วงกลมสองมิติ(1)
รายการกระสุน = []

คลาส กระสุน:
	นิยาม __เริ่ม__(ตน,x,y,เข้าเป้า):
		ตน.x = x
		ตน.y = y
		ตน.เข้าเป้า = เข้าเป้า

	นิยาม วาด(ตน):
		glBegin(GL_POINTS)
		ถ้า ตน.เข้าเป้า:
			glColor3f(1.0,0.2,0.2)
		นอกจากนั้น:
			glColor3f(0.2,1.0,0.2)
		glVertex2f(self.x,self.y)
		glEnd()

 อ่านต่อ...

The main goal of this project is to create peaceful 3d simulation/rendering engine,
Which can use with various computer languages. I planning to cross platform too but may not be very soon.

Current it still at very beta state. Some physics and rendering feature will be gradually added soon.

 

binay + source download here!!