【Android】OpenGL ES for Android 教程1 - HelloWorld
生活随笔
收集整理的這篇文章主要介紹了
【Android】OpenGL ES for Android 教程1 - HelloWorld
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本教程及后續(xù)教程全部參考或者轉(zhuǎn)載于:OpenGL ES Tutorial for Android?
本例相當(dāng)于openGL的HelloWorld程序。
先貼代碼,代碼中的注釋比較具體了。
主Activity類:
package seven.demo.openglhelloworld;import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle; import android.view.Menu;public class OpenGLDemo extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GLSurfaceView view = new GLSurfaceView(this);view.setRenderer(new OpenGLRenderer());setContentView(view);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_open_gldemo, menu);return true;} }OpenGLRenderer類,實現(xiàn)Renderer接口:
package seven.demo.openglhelloworld;import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10;import android.opengl.GLSurfaceView.Renderer; import android.opengl.GLU;/*** 類描述: 功能詳細(xì)描述:* * @author mengsifan* @date [2012-8-29]*/ public class OpenGLRenderer implements Renderer {/*** {@inheritDoc} 在這個方法中主要用來設(shè)置一些繪制時不常變化的參數(shù),比如:背景色,是否打開 z-buffer等。*/@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// 設(shè)置背景色 gl.glClearColor(.0f, .0f, .0f, .5f);/** 設(shè)置著色模式。參數(shù)mode可以是GL_SMOOTH(默認(rèn)值)或GL_FLAT。* 采用恒定著色時(即GL_FLAT),使用圖元中某個頂點的顏色來渲染整個圖元。*/gl.glShadeModel(GL10.GL_SMOOTH);// Depth buffer setup.gl.glClearDepthf(1.0f);// Enables depth testing. gl.glEnable(GL10.GL_DEPTH_TEST);// The type of depth testing to do. gl.glDepthFunc(GL10.GL_LEQUAL);// Really nice perspective calculations. gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);}/*** {@inheritDoc} 如果設(shè)備支持屏幕橫向和縱向切換,這個方法將發(fā)生在橫向<->縱向互換時。此時可以重新設(shè)置繪制的縱橫比率。*/@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {/** glViewport(GLint x,GLint y,GLsizei width,GLsizei height)為其函數(shù)原型。* X,Y————以像素為單位,指定了視口的左下角位置。* width,height————表示這個視口矩形的寬度和高度,根據(jù)窗口的實時變化重繪窗口。*/gl.glViewport(0, 0, width, height);/** glMatrixMode設(shè)置當(dāng)前矩陣模式 :* GL_MODELVIEW:對模型視景矩陣堆棧應(yīng)用隨后的矩陣操作。* GL_PROJECTION:對投影矩陣應(yīng)用隨后的矩陣操作。 * GL_TEXTURE:對紋理矩陣堆棧應(yīng)用隨后的矩陣操作。* 注意:與glLoadIdentity()一同使用。*/gl.glMatrixMode(GL10.GL_PROJECTION);// 重置當(dāng)前指定的矩陣為單位矩陣 gl.glLoadIdentity();// 計算窗口寬高比例GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,100.0f);gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();}/*** {@inheritDoc} 定義實際的繪圖操作。*/@Overridepublic void onDrawFrame(GL10 gl) {/** 可以使用 "|"運算符組合不同的緩沖標(biāo)志位,表明需要清除的緩沖。 例如glClear(GL_COLOR_BUFFER_BIT |* GL_DEPTH_BUFFER_BIT)表示要清除顏色緩沖以及深度緩沖。*/gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);}}轉(zhuǎn)載于:https://www.cnblogs.com/sifan/archive/2012/08/29/2661919.html
總結(jié)
以上是生活随笔為你收集整理的【Android】OpenGL ES for Android 教程1 - HelloWorld的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑发生错误声音怎么解决方法 电脑出现错
- 下一篇: sql数据库该名字