日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android opengl es 绘制位图字体

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android opengl es 绘制位图字体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android中繪制字體,用到了canvas,下面代碼里面為我寫的實例,幾乎每行代碼都有注釋。

1.Activity 類

import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundle;public class FontOpenglActivity extends Activity {GLSurfaceView gView ;FontRenderer fontRenderer;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);gView = new GLSurfaceView(this);fontRenderer = new FontRenderer();gView.setRenderer(fontRenderer);setContentView(gView);} }
2.渲染類

import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer;import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL; import javax.microedition.khronos.opengles.GL10;import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.opengl.GLUtils; import android.opengl.GLSurfaceView.Renderer;public class FontRenderer implements Renderer {//位圖private Bitmap bitmap;//四邊形的頂點坐標系private float[] vertex = new float[]{-2.5f,-2.5f,0,2.5f,-2.5f,0,-2.5f,2.5f,0,2.5f,2.5f,0};//紋理坐標系private float[] coord = new float[]{0,1.0f,1.0f,1.0f,0,0,1.0f,0};//紋理存儲定義,一般用來存名稱private int[] textures = new int[1];//頂點、紋理緩沖FloatBuffer vertexBuffer;FloatBuffer coordBuffer;@Overridepublic void onDrawFrame(GL10 gl) {gl.glClear(GL10.GL_DEPTH_BUFFER_BIT|GL10.GL_COLOR_BUFFER_BIT);gl.glLoadIdentity();//準備頂點緩沖ByteBuffer bb = ByteBuffer.allocateDirect(vertex.length * 4);bb.order(ByteOrder.nativeOrder());vertexBuffer = bb.asFloatBuffer();vertexBuffer.put(vertex);vertexBuffer.position(0);//準備紋理緩沖ByteBuffer coordbb = ByteBuffer.allocateDirect(coord.length * 4);coordbb.order(ByteOrder.nativeOrder());coordBuffer = coordbb.asFloatBuffer();coordBuffer.put(coord);coordBuffer.position(0);//開啟頂點和紋理緩沖gl.glEnableClientState(gl.GL_VERTEX_ARRAY);gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);//往里面進去一點gl.glTranslatef(0.0f, 0.0f, -6.0f);//設置頂點和紋理的位置、類型gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, coordBuffer);//繪圖gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);//取消緩沖gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);//結束繪圖gl.glFinish();}@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {//設置場景大小gl.glViewport(0, 0, width, height);float ratio = (float) width / height;//投影矩陣gl.glMatrixMode(GL10.GL_PROJECTION);//重置視圖gl.glLoadIdentity();//設置視圖的大小gl.glFrustumf(-ratio, ratio, -1, 1, 1, 15);// 設置觀察模型gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();}@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {initFontBitmap();gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);// 黑色背景色gl.glClearColorx(0, 0, 0, 0);// 啟用陰影平滑gl.glShadeModel(GL10.GL_SMOOTH);// 啟用深度測試gl.glEnable(GL10.GL_DEPTH_TEST);// 深度測試類型gl.glDepthFunc(GL10.GL_LEQUAL);// 設置深度緩存gl.glClearDepthf(1.0f);// 啟用紋理gl.glEnable(GL10.GL_TEXTURE_2D);// 創建紋理gl.glGenTextures(1, textures, 0);// 綁定紋理gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);//生成紋理GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);//線性濾波gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,GL10.GL_LINEAR);//放大時gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,GL10.GL_LINEAR);//縮小時 }/*** android中繪制字體,使用畫布canvas*/public void initFontBitmap(){String font = "需要渲染的文字測試!";bitmap = Bitmap.createBitmap(256, 256, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(bitmap);//背景顏色canvas.drawColor(Color.LTGRAY);Paint p = new Paint();//字體設置String fontType = "宋體";Typeface typeface = Typeface.create(fontType, Typeface.BOLD);//消除鋸齒p.setAntiAlias(true);//字體為紅色p.setColor(Color.RED);p.setTypeface(typeface);p.setTextSize(28);//繪制字體canvas.drawText(font, 0, 100, p);} }
3、運行效果



總結

以上是生活随笔為你收集整理的android opengl es 绘制位图字体的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产黄色一级 | 亚洲AV成人午夜无码精品久久 | av男人网 | 91av视频免费观看 | 日日夜夜精品视频免费 | av一区二区三区四区 | 精品国产91乱码一区二区三区 | 97色伦97色伦国产欧美空 | 丰满人妻综合一区二区三区 | 999久久久久 | 日韩av影视大全 | 中国毛片在线观看 | 国产美女一级片 | youjizz.com日本| 东方av在线播放 | 亚洲最新av| 国产成人精品综合久久久久99 | 女生扒开尿口 | 善良的女邻居在线观看 | 四虎网址在线 | 91免费视频网址 | 国产自产| 岛国一区二区三区 | 美女靠逼视频网站 | 青春草在线视频免费观看 | 亚洲激情自拍偷拍 | 欧美韩日国产 | av大帝| 香蕉视频在线观看网站 | 爽天天天天天天天 | 色中文网 | 国产伦精品一区二区三区视频痴汉 | 色窝窝综合色窝窝久久 | 国产日韩精品电影 | 午夜精品久久 | 久久久久国色av免费观看性色 | 在线成人毛片 | 9l视频自拍蝌蚪9l视频 | 精品久久电影 | 色哟哟在线免费观看 | 亚洲av成人无码久久精品 | 激情网av | 海角国产乱辈乱精品视频 | 麻豆影视在线播放 | 三级网站视频 | 国产野外作爱视频播放 | 337p嫩模大胆色肉噜噜噜 | 亚洲天堂一区二区在线 | 中文字幕狠狠干 | 黄色三级免费观看 | 欧美三级网站在线观看 | 国产色频 | 一区三区视频 | 国产视频a | 国产精品69av| 五月婷久久 | 91美女福利视频 | 午夜视频在线 | gav成人| 懂色tv | www.三级.com | 成人免费在线视频网站 | 特大黑人巨人吊xxxx | 天天插美女 | 99福利视频导航 | 天天做天天爱天天爽综合网 | 国产啪视频 | 羞羞免费视频 | 日本一区二区三区欧美 | 亚洲国产精品无码久久 | 亚洲精品视频网址 | 精品伦一区二区三区 | 91黄版 | 57pao国产成永久免费视频 | 日韩欧美日韩 | 日日爱886 | 日日夜夜综合网 | 性——交——性——乱免费的 | 女生裸体无遮挡 | 天天射狠狠干 | 午夜影院操 | 日本精品一区 | 青草视频在线播放 | 人人干人 | 欧美日韩网址 | 这里只有精品免费视频 | 成人免费看av | 婷婷一区二区三区 | 免费麻豆 | 欧美a性 | 国产欧洲亚洲 | 天天骑夜夜操 | 少妇人妻互换不带套 | 午夜精品福利一区二区三区蜜桃 | 精品久久久亚洲 | 亚洲黄色片| 四虎网址在线观看 | 中文字幕高清在线免费播放 | 久久久一 |