編輯:關於Android編程
OpenGL是桌面環境下的繪制,渲染三維圖形的API。
OpenGL ES是在Android環境下的OpenGL。
在Android中OpenGL需要在GLSurfaceView中渲染,渲染控制函數在GLSurfaceView.Renderer中。接下來會介紹如何創建第一個OpenGL程序
(1)聲明OpenGL ES API
(2)如果在APP中用到紋理,需要聲明采用紋理的格式
只需要在Activity中設置一個GLSurfaceView即可。
FirstGLSurfaceView繼承於GLSurfaceView。
public class FirstGLActivity extends Activity {
private FirstGLSurfaceView mGLView;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
mGLView = new FirstGLSurfaceView(getApplication());
setContentView(mGLView);
}
@Override
protected void onPause() {
super.onPause();
mGLView.onPause();
}
@Override
protected void onResume() {
super.onResume();
mGLView.onResume();
}
}
此部分需要聲明OpenGL版本,設置Renderer
class FirstGLSurfaceView extends GLSurfaceView {
private final FirstGLRenderer mRenderer;
public MyGLSurfaceView(Context context){
super(context);
// Create an OpenGL ES 2.0 context
setEGLContextClientVersion(2);
mRenderer = new MyGLRenderer();
// Set the Renderer for drawing on the GLSurfaceView
setRenderer(mRenderer);
}
}
GLSurfaceView.Renderer是OpenGL ES最重要的一部分,設置OpenGL環境,繪制OpenGL都是在Renderer中完成。
Render實現了GLSurfaceView.Renderer接口,需要實現3個函數:
onSurfaceCreated() - Surface創建時會觸發此事件,在此事件中需要完成OpenGL的初始化工作。
onDrawFrame() - 更新OpenGL繪制的內容
onSurfaceChanged() - 當Surface大小改變時觸發此事件,比如方向改變等。
如果您了解桌面環境下OpenGL編程,那麼我們可以將其與GLUT創建的OpenGL程序對應起來(參見第一個OpenGL程序)。
onSurfaceCreated --- init
onDrawFrame --- display
?
public class FirstGLRenderer implements GLSurfaceView.Renderer {
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
// Set the background frame color
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}
public void onDrawFrame(GL10 unused) {
// Redraw background color
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
public void onSurfaceChanged(GL10 unused, int width, int height) {
GLES20.glViewport(0, 0, width, height);
}
}
Android模仿微信語音聊天功能
項目效果如下:項目目錄結構如下:代碼如下:AudioManager.javapackage com.xuliugen.weichat;import java.io.Fil
android canvas常用的方法解析(一)
我們知道要想繪制一些特別的效果的話,離不開Paint和Canvas,Paint是你所畫圖形的一些基本屬性,按照面向對象的思想,你要把一個圓畫在畫布上,那麼是有畫筆和畫布,
Android中使用Expandablelistview實現微信通訊錄界面
之前的博文《Android 中使用ExpandableListView 實現分組的實例》我簡單介紹了使用ExpandableListView實現簡單的好友分組功能,今天我
android性能優化實戰理論篇
第二篇:理論通過之前前篇介紹的工具,我們知道了應該怎麼樣去獲取要分析的數據,但是也僅僅局限在於怎麼樣獲取數據,而沒有深入數據分析,這一篇主要講解的是UI刷新這塊部分and