复习一下android加载图片的知识。放一个png到drawable里面。添加一个工具类
public class DataManage {
private static Bitmap mBitmap;
public static void init(Resources res){
mBitmap = BitmapFactory.decodeResource(res, R.drawable.nehe);
}
public static Bitmap getBitmap(){
return mBitmap;
}
}
这样我们是不是可以直接用
Bitmap mBitmap = DataManage.getBitmap();
来获得这个bitmap了,当然需要在activity里面初始化这个DataManage。
DataManage.init(this.getResources());
好了,开始把bitmap放到opengl里的纹理里面。
IntBuffer intBuffer = IntBuffer.allocate(1);
gl.glGenTextures(1, intBuffer);
首先让opengl准备些纹理,这里我们准备1个。glGenTextures第二个参数要求是IntBuffer,实际上就是一个int数组的变形,allocate几个就有几个纹理。
texture = intBuffer.get();
取得opengl准备的纹理,为了后面把图片绑定到这个纹理里面
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);
开始绑定这个2D纹理
Bitmap mBitmap = DataManage.getBitmap();
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, mBitmap, 0);
这一句才重要,此纹理是一个2D纹理 ( GL_TEXTURE_2D )。参数二代表图像的详细程度,通常就由它为零去了。参数三是数据的成分数。参数四是边框的值,一般就是“0”。据说openggl_es不支持纹理边界,所以必须设置为0。
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
下面的两行告诉OpenGL在显示图像时,当它比放大得原始的纹理大 ( GL_TEXTURE_MAG_FILTER )或缩小得比原始得纹理小( GL_TEXTURE_MIN_FILTER )时OpenGL采用的滤波方式。通常这两种情况下我都采用 GL_LINEAR 。这使得纹理从很远处到离屏幕很近时都平滑显示。使用 GL_LINEAR 需要CPU和显卡做更多的运算。如果您的机器很慢,您也许应该采用 GL_NEAREST 。过滤的纹理在放大的时候,看起来马赛克的很。您也可以结合这两种滤波方式。在近处时使用 GL_LINEAR ,远处时 GL_NEAREST 。
有了纹理咋样弄的立方体上去呢,这里要用到纹理坐标:
先看纹理坐标数组
private float[] mTextCoordArray={
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,1.0f,1.0f,
0.0f,0.0f,0.0f,1.0f,
1.0f,1.0f,1.0f,0.0f,
1.0f,1.0f,1.0f,0f,
0f,0f,0f,1.0f,
0,1.0f,1.0f,1.0f,
1.0f,0f,0f,0f,
0f,0f,0f,1.0f,
1.0f,1.0f,1.0f,0f,
1.0f,0f,0f,0f,
0f,1.0f,1.0f,1.0f
};
private FloatBuffer mTextCoordBuffer;
纹理的坐标就是用了把纹理贴到面上的坐标的对应关系
纹理的坐标是
左下角 0,0
左上角 0,1
右下角 1,0
右上角 1,1
这里面弄了12个面,表示六变形的12个面都画纹理。
OnDrawFrame里面添加的代码如下
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
//设置使用纹理数组
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mQuadsBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextCoordBuffer);
//把纹理数组指定到纹理buffer
分享到:
相关推荐
Android面试.exe lession1_view.exe lession2_布局.exe lession2_线性布局.exe lession2_雨滴.exe lession3_按钮.exe lession3_图片.exe lession3_图片2.exe ...... lession15_手机端离线聊天.exe lession15_手机端...
小费计算器应用演示 这是小费计算器的第二个安卓应用程序。 花费时间:总共花费4小时 完成的用户故事: 用户显示指定输入金额的指定百分比的小费 用户输入交易总额 用户可以选择小费金额(即 10%、15%、20%) ...
union2 Casptain Cook lession5-6 .docx
Lession03.sql
6. **DirectInput** - DirectInput用于直接与各种输入设备(如键盘、鼠标、游戏手柄)交互,提供低延迟和精确的用户输入反馈。 7. **DirectSound** - DirectSound处理游戏中的音频播放,支持3D音效和多声道输出,...
react-native-android-lession > 老穆记录: react native andorid 关于iOS部分可以参考vczero的lession文章 > React-Native 是Android端实现实现动态部署的另一种思路,绕过dexLoad【一些现有的Android插件框架...
models-lession.zip是一个压缩包,解压后包括目录slim,用于重新训练模型
Lession3_4.java
"C++教学视频Lession1"旨在为初学者提供一个深入理解和掌握C++基础知识的平台。本教学视频系列从基础出发,通过直观且详细的讲解,帮助学习者构建扎实的C++编程基础。 在“Lession1”中,你将首先了解C++的历史背景...
Lession2-week1.zip
在本课程"mooc_android_高仿qq登录界面设计与实现"中,我们将深入探讨如何在Android平台上构建一个类似于QQ的登录界面。这个项目旨在帮助开发者掌握Android UI设计的基本技巧,特别是通过使用RelativeLayout和...
标题 "lession1.zip" 提供的信息有限,但根据描述中的同样内容,我们可以推测这是一个教学材料或者编程课程的初级课件。这个压缩包包含了几个关键文件,这些文件名暗示了我们可能在处理一个关于C语言编程的基础教程...
6. **Spring Boot**:现代Spring开发的一个流行选择,它简化了设置和配置过程。我们将探索如何使用Spring Boot快速启动一个新的应用项目。 7. **测试**:Spring提供了一系列工具和注解来支持单元测试和集成测试,如...
【标题】"01.Origin概述_标清_LOT_origin_lession_" 涉及的知识点主要集中在"Origin"的概念上,这可能是指一个特定的IT产品或技术的起源、基础概念或者是某个学习课程的第一课。"LOT"可能是课程系列的缩写,暗示这是...
在Android平台上,开发一款视频播放器是一项常见的任务,它涉及到多媒体处理、网络通信以及用户界面设计等多个技术领域。本资源提供了“Android视频播放器”的源码,对于想要深入理解Android视频播放器开发的开发者...
在`lession_2.view`中,可能包含了如何将自定义的水滴视图整合到Android布局中的示例。这可能涉及到`LinearLayout`、`RelativeLayout`、`ConstraintLayout`等布局管理器的使用,或者自定义的`ViewGroup`。 通过...
在Android开发中,单选框(Radio Button)是一种常见的用户界面元素,用于让用户在多个选项中选择一个。本文将深入探讨如何在...在lession_6的学习中,你可以深入实践这些知识,进一步提升对Android单选框的掌握。
【标题】"02.Origin窗口结构与布局_标清_LOT_origin_lession_" 指的是一个关于Origin软件的教程视频,其中“标清”意味着视频质量为标准清晰度,适合在网络带宽有限的情况下观看。LOT可能代表Learning Objectives或...
【标题】:“Lession1”通常意味着这是一系列教程或课程的第一部分,专注于某一特定主题。在这种情况下,由于没有提供具体细节,我们可以假设“Lession1”是关于TypeScript编程语言的基础教学。 【描述】:“自述...
6. 安全与备份:学习如何保护数据文件免受意外丢失或损坏,以及定期备份的重要性。 7. "标清"可能指的是视频质量,因此课程可能包含演示部分,通过视频清晰地展示每个步骤,帮助学习者直观理解。 8. 实际操作练习...