ANDROID APP
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
144 บทที่ 5 อีเวนต์ต่างๆ ที่เกิดขึ้นในส่วนการติดต่อกับผู้ใช้งาน<br />
}<br />
gl.glLoadIdentity();<br />
gl.glFrustumf(-ratio, ratio, -1, 1, 1, 20);<br />
public void onSurfaceCreated(GL10 gl, EGLConfig config) {<br />
gl.glDisable(GL10.GL_DITHER);<br />
/* one-time OpenGL initialization */<br />
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,<br />
GL10.GL_FASTEST);<br />
}<br />
if (mTranslucentBackground) {<br />
gl.glClearColor(0,0,0,0);<br />
} else {<br />
gl.glClearColor(1,1,1,1);<br />
}<br />
gl.glEnable(GL10.GL_CULL_FACE);<br />
gl.glShadeModel(GL10.GL_SMOOTH);<br />
gl.glEnable(GL10.GL_DEPTH_TEST);<br />
}<br />
private boolean mTranslucentBackground;<br />
private Pyramid mPyramid;<br />
private float mAngle, mAngleDelta=0;<br />
private float mCenter[]={0,0,-10};<br />
private float mVel[]={0.025f, 0.03535227f, 0f};<br />
การเคลื่อนไหวของรูปทรงไปทั่วจอภาพนั้นเกิดจากการทำงานของเมธอด onDrawFrame()<br />
จอภาพจะถูกลบ เพื่อสร้างภาพเฟรมถัดไป ซึ่งเรากำหนดให้จุดศูนย์กลางของปิรามิดเก็บไว้ในตัวแปร<br />
ชื่อ mCenter[] โดยที่กึ่งกลางจอจะถูกกำหนดให้เป็นจุดเริ่มต้น และเมื่อเราสั่งให้จุดเริ่มต้นมีค่าเป็น<br />
(0,0,-10) รูปทรงก็จะแสดงที่ตำแหน่งขวาบนของจอ และในระหว่างที่แสดงภาพในแต่ละเฟรมนั้น<br />
รูปทรงจะหมุนด้วยการใช้ค่าของ mAngleDelta และ mVel[] โดยตัวแปร mVel[] จะเก็บค่าของ<br />
แกน x และ y ของตำแหน่งที่รูปทรงจะเคลื่อนที่ไป และเมื่อรูปทรงเคลื่อนที่ไปจนถึงของของจอภาพ<br />
ค่าของ mVel[] ก็จะเปลี่ยนไปในทิศทางอื่นเพื่อให้สามารถแสดงรูปทรงในเฟรมถัดไปได้<br />
ในชุดคำสั่งที่ 5.19 จะแสดงการทำงานของแอคทิวิตี้หลักที่จะแปลงข้อมูลภายในวิวให้เป็น<br />
ออบเจ็กต์ของ OpenGL ES โดยการเคลื่อนไหวของรูปทรงนี้ เราสามารถสั่งให้หยุดหรือทำต่อด้วย<br />
คำสั่งเหล่านี้ได้