开源项目之Android-GL(OpenGL 编程)
Android-GL 是 OpenGL 编程的一些 Android 平台上的实例集合,非常适合 OpenGL 初学者。
该项目就22个目标文件,如图:
效果如图:
实例1,效果如图:
代码如下:
protected void init(GL10 gl){// Setup background colorgl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);// Smooth shadinggl.glShadeModel(GL10.GL_SMOOTH);}public void onDrawFrame(GL10 gl){xrot += 1f;yrot += 1f;// Clear screengl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);// Scene view matrixgl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();gl.glPushMatrix();gl.glTranslatef(-0.25f, 0.0f, -2f);gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f);// Setup triangle data and draw it.gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triangleBuff);gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuff);gl.glEnableClientState(GL10.GL_COLOR_ARRAY);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3);// Reset to identitygl.glPopMatrix();// Clear the color arraygl.glDisableClientState(GL10.GL_COLOR_ARRAY);// Translation to square location.gl.glTranslatef(0.25f, 0.0f, -2f);gl.glRotatef(yrot, 0, 1, 0);// Setup square data & draw itgl.glVertexPointer(3, GL10.GL_FLOAT, 0, squareBuff);gl.glColor4f(0.25f, 0.25f, 0.75f, 1.0f);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);}
实例2,效果如图:
实现代码如下:
protected void init(GL10 gl){gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);gl.glEnable(GL10.GL_DEPTH_TEST);gl.glDepthFunc(GL10.GL_LEQUAL);gl.glClearDepthf(1.0f);gl.glShadeModel(GL10.GL_SMOOTH);}public void onDrawFrame(GL10 gl){gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();gl.glTranslatef(0, 0, -1);gl.glPushMatrix();gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triangleBuff);gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorBuff);gl.glEnableClientState(GL10.GL_COLOR_ARRAY);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3);gl.glPopMatrix();gl.glPushMatrix();gl.glTranslatef(-0.2f, -.1f, -1.0f);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3);gl.glPopMatrix();gl.glPushMatrix();gl.glTranslatef(0.1f, 0.1f, -0.5f);gl.glRotatef(45.0f, 0, 0, 1);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3);gl.glPopMatrix();gl.glTranslatef(0.15f, 0.05f, -0.4f);gl.glRotatef(45, 0, 1, 0);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 3);gl.glPopMatrix();}
实例3,效果如图:
代码如下:
protected void init(GL10 gl){gl.glEnable(GL10.GL_LIGHTING);gl.glEnable(GL10.GL_LIGHT0);gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_AMBIENT, matAmbient, 0);gl.glMaterialfv(GL10.GL_FRONT_AND_BACK, GL10.GL_DIFFUSE, matDiffuse, 0);gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_AMBIENT, lightAmbient, 0);gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_DIFFUSE, lightDiffuse, 0);gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, lightPos, 0);gl.glEnable(GL10.GL_DEPTH_TEST);gl.glDepthFunc(GL10.GL_LEQUAL);gl.glEnable(GL10.GL_TEXTURE_2D);gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);gl.glClearDepthf(1.0f);gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeBuff);gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texBuff);gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);gl.glEnable(GL10.GL_CULL_FACE);gl.glShadeModel(GL10.GL_SMOOTH);tex = loadTexture(gl, R.drawable.icon);}float xrot = 0.0f;float yrot = 0.0f;public void onDrawFrame(GL10 gl){gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);setupCube(gl);gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();GLU.gluLookAt(gl, 0, 0, 3, 0, 0, 0, 0, 1, 0);gl.glRotatef(xrot, 1, 0, 0);gl.glRotatef(yrot, 0, 1, 0);drawCube(gl);xrot += 1.0f;yrot += 0.5f;}
实例总共有14个!此处就学习了前三甲了!~
学习的目标是成熟!~~
开源项目之Android-GL(OpenGL 编程)相关推荐
- java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程
作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...
- 从 bug 中学习:六大开源项目告诉你 go 并发编程的那些坑
作者:richardyao,腾讯 CSIG 后台开发工程师 并发编程中,go 不仅仅支持传统的通过共享内存的方式来通信,更推崇通过channel来传递消息,这种新的并发编程模型会出现不同于以往的bug ...
- 使用ConnectBot开源项目在android设备上管理你的linux系统
最近,工作中有使用android通过ssh管理linux系统的需求,找到了这个ConnectBot这个开源项目https://github.com/connectbot/connectbot.http ...
- 【开源项目】Android 手写记事 App(半成品)
该项目已上传到 CSDN 的 Git 平台中 项目地址:https://code.csdn.net/gd920129/whiteboard GIT SSH:git@code.csdn.net:gd92 ...
- 开源项目之Android繁体中文输入法
一款功能强大的输入法,集合 "广东话.拼音.仓颉.速成"四种常用中文输入法,以及英文.数字及符号键盘,一按独立切换键即可变更.同一键盘可作中英文输入,无需切换,支持联想字功能,融合 ...
- 【开源项目】Android开发内置App自动升级
1.准备工作,首先需要在AndroidManifest.xml中的application中加入以下内容 <providerandroid:name="android.support.v ...
- 【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】
package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util ...
- 优秀的 Android 开源项目
为什么80%的码农都做不了架构师?>>> 摘要 转载http://www.trinea.cn/android/android-open-source-projects-vie ...
- 最火的Android开源项目整理
一.代码库 1.from 代码家 整理比较好的源码连接 *********************************************************************** ...
- Java开源Android开源项目
FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 更多FBRea ...
最新文章
- 金融业加速智能化,解析360金融AI基础架构和应用
- 区块链智能合约入门:Hello world(2)
- react-native 小米手机和 mac 安装
- 面向中文短文本的实体链指任务竞赛亚军DeepBlueAI团队技术分享
- CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
- Web应用的负载均衡、集群、高可用(HA)解决方案整理总结
- 计算机98k音乐,【土豆】handclap 98K 完整版
- Win10怎样彻底关闭安全中心
- 无连续重复的随机算法
- 短视频追剧的末日来了?
- 一条让人不安的坐地龙
- 坚果云 linux 使用方法,树莓派4B踩坑指南 - (10)安装坚果云(暂时失败)
- VUE中导出Excel功能的实现
- win10经常无法复制粘贴
- ssm+vue基本微信小程序的校园二手商城系统 计算机毕业设计
- HTMl+CSS 模仿京东网登录页面
- 这七种职业男人让多少日本女性着迷
- matlab合成和弦,基于Matlab实现音乐识别与自动配置和声的功能.pdf
- BackTrack V5的汉化
- win7下装ubuntu双系统 硬盘安装详细教程
热门文章
- [IOS]'Project Name' was compiled with optimization
- 6410修改键盘驱动 自定义6*5矩阵键盘
- PTA|pintia.cn计算摄氏温度
- 《如何阅读一本书》读后感1
- 区分概率中的事件关系
- python画一朵玫瑰花,制作成可执行文件
- QPSK调制与解调原理
- 【社区分享】从零开始学习 TinyML,建立 TensorFlow 深度学习模型(技术优化篇)
- WeBankBlockchain 数据治理全景
- java里remark是什么意思_remark_remark的意思和用法搭配