1. 程式人生 > 其它 >最通俗的安卓OpenGL教學01——OpenGL的簡單使用

最通俗的安卓OpenGL教學01——OpenGL的簡單使用

技術標籤:OpenGL ES

快過年了,提前跟大家說一聲 “中秋快樂!”哈哈哈。。。

今天開始,我要寫個關於OpenGL教學的系列文章,目的是想整理一下工作中接觸到的OpenGL知識,同時也想把一些簡單的入門知識分享給大家,方便大家入門。如果你不小心讀到它,產生了些許疑問或者發現了文章中錯誤,再或者想與我有更多溝通交流的,都可以聯絡我。

簡介:OpenGL(Open Graphics Library,譯名:開放圖形庫或者“開放式圖形庫”)是用於渲染2D、3D向量圖形的跨語言、跨平臺的應用程式程式設計介面(API)。 這個介面由近350個不同的函式呼叫組成,用來繪製從簡單的圖形位元到複雜的三維景象。學好了OpenGL ,就可以在那些支援OpenGL的機器上正常使用這些介面,在螢幕上看到繪製的結果。

正式開始,在安卓開發中,最簡單的openGL使用就3步:

  • 繼承GLSurfaceView
  • 實現介面 GLSurfaceView.Renderer
  • 佈局中引用

來,敲程式碼,這裡以實現繪製一屏紅色為例。

1.繼承GLSurfaceView

自定義一個View,新建一個類,繼承GLSurfaceView,在構造方法裡呼叫GLSurfaceView的setRenderer方法。

package com.york.media.opengl.egl;

import android.content.Context;
import android.opengl.GLSurfaceView;
import android.
util.AttributeSet; /** * author : York * date : 2020/12/17 21:57 * desc : 最簡單的OpenGL使用方法 */ public class YGLSurfaceView extends GLSurfaceView { public YGLSurfaceView(Context context) { super(context); } public YGLSurfaceView(Context context, AttributeSet attrs) { super
(context, attrs); //1.自定義的 Render,在 Render中實現繪製 YGLRender yGLRender = new YGLRender(); //2.呼叫 GLSurfaceView的setRenderer方法 setRenderer(yGLRender); } }

2.實現 GLSurfaceView.Renderer 介面

自定義一個 Render,實現GLSurfaceView.Renderer介面,然後在 Render中完成繪製。

package com.york.media.opengl.egl;

import android.opengl.GLES20;
import android.opengl.GLSurfaceView;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

/**
 * author : York
 * date   : 2020/12/17 21:58
 * desc   : Render中使用紅色清屏
 */
public class YGLRender implements GLSurfaceView.Renderer {

    public YGLRender() {
    }

    @Override
    public void onSurfaceCreated(GL10 gl10, EGLConfig eglConfig) {

    }

    @Override
    public void onSurfaceChanged(GL10 gl10, int with, int height) {
        GLES20.glViewport(0, 0, with, height);
    }

    @Override
    public void onDrawFrame(GL10 gl10) {
        //使用紅色清屏
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
        GLES20.glClearColor(1f,0f,0f,1f);
    }
}

佈局中引用自定義的GLSurfaceView

最後,在佈局中引用自定義的GLSurfaceView,就可以顯示出紅色了。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.york.media.opengl.egl.YGLSurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

效果是這樣的: