這篇文章給大家介紹OpenGL ES中如何添加動(dòng)作,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)上杭免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
在屏幕上繪制對(duì)象是OpenGL的最基本功能,你可以使用其他的Android圖形框架類,如Canvas和Drawable對(duì)象來(lái)完成這些功能。OpenGLES提供了一些用于在三維空間中移動(dòng)和變換被繪制的對(duì)象的能力,以及其他的創(chuàng)建良好用戶體驗(yàn)的獨(dú)特方式。
給圖形添加旋轉(zhuǎn)動(dòng)作
旋轉(zhuǎn)圖形
使用OpenGL ES 2.0來(lái)旋轉(zhuǎn)一個(gè)繪制對(duì)象是相對(duì)簡(jiǎn)單的。你要?jiǎng)?chuàng)建另外的變換矩陣(旋轉(zhuǎn)矩陣),然后把它跟投影和攝像機(jī)變換矩陣組合到一起:
privatefloat[]mRotationMatrix =newfloat[16]; public void onDrawFrame(GL10 gl) { ... // Create a rotationtransformation for the triangle long time = SystemClock.uptimeMillis() % 4000L; float angle = 0.090f * ((int) time); Matrix.setRotateM(mRotationMatrix, 0, angle, 0, 0, -1.0f); // Combine the rotationmatrix with the projection and camera view Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0); // Draw triangle mTriangle.draw(mMVPMatrix); }
做了這些改變之后,如果你的三角形沒(méi)有旋轉(zhuǎn),那么就要確認(rèn)你是否完成了GLSurfaceView.RENDERMODE_WHEN_DIRTY設(shè)置。
啟用連續(xù)的渲染
如果你一直跟隨在學(xué)習(xí)本文的示例代碼,那么要確保像下面代碼那樣,注釋掉對(duì)渲染模式的設(shè)置,否則OpenGL只會(huì)旋轉(zhuǎn)圖形一次,然后等待來(lái)自GLSurfaceView容器的requestRender()方法的調(diào)用。
publicMyGLSurfaceView(Context context){ ... // Render the view onlywhen there is a change in the drawing data //setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);// comment out for auto-rotation }
除非對(duì)象的變化跟任何用戶交互無(wú)關(guān),否則設(shè)置一個(gè)開(kāi)關(guān)標(biāo)記是一個(gè)好主意。
關(guān)于OpenGL ES中如何添加動(dòng)作就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
本文標(biāo)題:OpenGLES中如何添加動(dòng)作
分享網(wǎng)址:http://jinyejixie.com/article40/pgedeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、企業(yè)網(wǎng)站制作、用戶體驗(yàn)、云服務(wù)器、企業(yè)建站、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)