- 浏览: 228170 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
itlang01:
推荐一款动态添加日期的插件https://github.com ...
利用mysql触发器记录数据的插入和更新时间 -
daydayupzzc:
好,不错,清楚
Spring MVC的拦截器 -
zi_wu_xian:
不管用POI还是JXL都是第三的操作excel的组件,都有破坏 ...
java操作excel——jxl和poi比较 -
小头猎豹:
支持无私的分享,很有用,十分感谢!!
Maven之使用SVN版本号 -
superich2008:
写的很详细,正在找这个资料,多谢博主分享。
Maven之使用SVN版本号
OpenGL给正方体的各个面加上纹理(贴图)
注意事项:
*图片如果放在drawable-mdpi目录下,则在模拟器上可以正常显示,但是在真机上不能显示图片,本处新建一个drawable-nodpi目录,将图片资源放在此目录下
1.代码
import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.opengl.GLSurfaceView; import android.os.Bundle; public class OpenGLActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bitmap bm1 = BitmapFactory.decodeResource(getResources(), R.drawable.a1); Bitmap bm2 = BitmapFactory.decodeResource(getResources(), R.drawable.a2); Bitmap bm3 = BitmapFactory.decodeResource(getResources(), R.drawable.a3); Bitmap bm4 = BitmapFactory.decodeResource(getResources(), R.drawable.a4); Bitmap bm5 = BitmapFactory.decodeResource(getResources(), R.drawable.a5); Bitmap bm6 = BitmapFactory.decodeResource(getResources(), R.drawable.a6); GLSurfaceView glView = new GLSurfaceView(this); glView.setRenderer(new GLTextureRender(bm1, bm2, bm3, bm4, bm5, bm6)); setContentView(glView); } }
package com.lanhuidong.opengl; import java.nio.ByteBuffer; import java.nio.IntBuffer; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import com.lanhuidong.opengl.util.BufferToNativeOrder; import android.graphics.Bitmap; import android.opengl.GLSurfaceView.Renderer; import android.opengl.GLUtils; public class GLTextureRender implements Renderer { float xrot, yrot, zrot; int texture[]; int one = 0x10000; int[] vertices = new int[]{ -one,-one,one, //前 one,-one,one, one,one,one, -one,one,one, -one,-one,-one, //后 -one,one,-one, one,one,-one, one,-one,-one, -one,one,-one, //上 -one,one,one, one,one,one, one,one,-one, -one,-one,-one, //下 one,-one,-one, one,-one,one, -one,-one,one, -one,-one,-one, //左 -one,-one,one, -one,one,one, -one,one,-one, one,-one,-one, //右 one,one,-one, one,one,one, one,-one,one, }; int[] texCoords = new int[]{ one,one,one,0,0,0,0,one, 0,0,0,one,one,one,one,0, one,one,one,0,0,0,0,one, 0,one,one,one,one,0,0,0, 0,0,0,one,one,one,one,0, one,0,0,0,0,one,one,one, }; ByteBuffer indices1 = ByteBuffer.wrap(new byte[]{ 0,1,3,2, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, }); ByteBuffer indices2 = ByteBuffer.wrap(new byte[]{ 0,0,0,0, 4,5,7,6, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 }); ByteBuffer indices3 = ByteBuffer.wrap(new byte[]{ 0,0,0,0, 0,0,0,0, 8,9,11,10, 0,0,0,0, 0,0,0,0, 0,0,0,0 }); ByteBuffer indices4 = ByteBuffer.wrap(new byte[]{ 0,0,0,0, 0,0,0,0, 0,0,0,0, 12,13,15,14, 0,0,0,0, 0,0,0,0 }); ByteBuffer indices5 = ByteBuffer.wrap(new byte[]{ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 16,17,19,18, 0,0,0,0 }); ByteBuffer indices6 = ByteBuffer.wrap(new byte[]{ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 20,21,23,22, }); private Bitmap bm1; private Bitmap bm2; private Bitmap bm3; private Bitmap bm4; private Bitmap bm5; private Bitmap bm6; public GLTextureRender(Bitmap bm1, Bitmap bm2,Bitmap bm3, Bitmap bm4,Bitmap bm5, Bitmap bm6){ this.bm1 = bm1; this.bm2 = bm2; this.bm3 = bm3; this.bm4 = bm4; this.bm5 = bm5; this.bm6 = bm6; } @Override public void onDrawFrame(GL10 gl) { gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glTranslatef(0.0f, 0.0f, -5.0f); gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f); gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f); gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); gl.glVertexPointer(3, GL10.GL_FIXED, 0, BufferToNativeOrder.getNativeOrderIntBuffer(vertices)); gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, BufferToNativeOrder.getNativeOrderIntBuffer(texCoords)); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]); gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 24, GL10.GL_UNSIGNED_BYTE, indices1); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[1]); gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 24, GL10.GL_UNSIGNED_BYTE, indices2); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[2]); gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 24, GL10.GL_UNSIGNED_BYTE, indices3); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[3]); gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 24, GL10.GL_UNSIGNED_BYTE, indices4); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[4]); gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 24, GL10.GL_UNSIGNED_BYTE, indices5); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[5]); gl.glDrawElements(GL10.GL_TRIANGLE_STRIP, 24, GL10.GL_UNSIGNED_BYTE, indices6); gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY); gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); xrot+=1f; yrot+=1.2f; zrot+=0.6f; } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { float ratio = (float) width / height; gl.glViewport(0, 0, width, height); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glClearColor(1, 1, 1, 1); gl.glEnable(GL10.GL_CULL_FACE); gl.glShadeModel(GL10.GL_SMOOTH); gl.glEnable(GL10.GL_DEPTH_TEST); gl.glClearDepthf(1.0f); gl.glDepthFunc(GL10.GL_LEQUAL); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); gl.glEnable(GL10.GL_TEXTURE_2D); IntBuffer intBuffer = IntBuffer.allocate(6); gl.glGenTextures(6, intBuffer); texture = intBuffer.array(); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[0]); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm1, 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); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[1]); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm2, 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); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[2]); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm3, 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); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[3]); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm4, 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); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[4]); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm5, 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); gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[5]); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm6, 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); } }
2.效果
发表评论
-
Activity--生命周期
2012-02-03 22:14 1152import android.app.Activity; i ... -
手电筒
2011-11-19 10:20 1433一个简单的手电筒应用,只有使用相机的闪光灯照片功能。(andr ... -
OpenGL学习4
2011-07-07 20:50 1289绘制一个3D的三棱锥 1.代码 package co ... -
OpenGL学习3
2011-06-30 20:11 3037颜色和旋转 1.平滑着色 glColorPointer ( ... -
OpenGL学习2
2011-06-29 22:22 4156绘制多边形 1.glVertexPointer (int s ... -
OpenGL学习1
2011-06-27 22:05 14651.创建一个Activity import android. ... -
透明对话框
2011-06-23 11:22 3004最近需要实现一个透明对话框效果,上网查了很多关于对话框背景透明 ... -
ActivityGroup中按返回键弹出询问是否退出对话框
2011-06-11 23:57 5184今天在写android程序时遇到一个问题,一个Activity ... -
在Application中保存全局变量
2011-05-26 19:50 19521.新建一个类MyApp继承Application impo ... -
应用程序发布(一)——给应用签名
2011-05-26 12:22 1529keytool和jarsiger是jdk带的工具,zipali ... -
IntentService
2011-03-24 20:40 1562package lan.activity; import ... -
SQLite3主键自动递增
2011-02-26 14:15 2321学习了下Android中的sqlite3,关于主键自动递增调试 ...
相关推荐
### OpenGL学习知识点详解 #### 一、OpenGl简介与预备知识 **1.1 引言** 本教程旨在为读者提供一个系统性学习OpenGl的平台。OpenGl是一种跨语言、跨平台的应用程序接口(API),用于渲染二维、三维矢量图形。它是...
标题“Qt Opengl学习绝好资料”说明这是一份优秀的学习资源,它旨在指导读者如何在Qt环境中使用OpenGL进行图形绘制。标题中提到的“学习”和“资料”暗示了本资源的教育性质,它更侧重于入门和基础知识的传递。描述...
收集到的OpenGL学习资料,内容包括: 1.OpenGL着色语言.rar 2.NEHE教程.pdf 3.openglapi.CHM 4.opengl编程与实例.pdf 5.openGL图像系统详解(英).pdf 6.vc下OpenGL开发框架与应用.pdf 7.北大 openGL 课程.pdf
1. **OpenGL官方文档** (opengl.org/developers/documentation):这是所有OpenGL学习者的基础起点。官方网站提供了完整的OpenGL规范、参考手册和API文档,详细介绍了各个函数、枚举和常量的作用。同时,这里也有...
在这个"opengl类学习文件"中,包含了多个关键元素,可以帮助你深入理解并掌握OpenGL编程。 首先,"gltools"可能是一个包含GLUT(OpenGL Utility Toolkit)和其他辅助工具的库,它为OpenGL程序员提供了基本的窗口...
1. 与 C 语言紧密结合:OpenGL 命令最初就是用 C 语言函数来进行描述的,对于学习过 C 语言的人来讲,OpenGL 是容易理解和学习的。 2. 强大的可移植性:OpenGL 不仅用于 Windows,还可以用于 Unix/Linux 等其它系统...
5. **缓冲区**:OpenGL使用各种缓冲区来存储数据,如顶点缓冲区、索引缓冲区和帧缓冲区,它们可以提高性能并简化编程。 6. **纹理**:纹理是OpenGL中重要的概念,用于给物体表面添加细节和色彩。它们可以是2D、3D或...
OpenGL编程入门学习主要涵盖以下几个方面的知识点: 1. **OpenGL简介**:OpenGL是一个开放源代码的图形库,作为主流的图形应用程序接口(API)之一,它提供了丰富的图形渲染功能。OpenGL的特点包括与C语言紧密集成...
"红宝书"通常指的是"OpenGL编程指南",而"蓝宝书"则是"OpenGL超级宝典",这两本书是OpenGL学习者的重要参考资料。 红宝书,全名《OpenGL编程指南》(The OpenGL Programming Guide),由OpenGL Architecture Review...
学习OpenGL ES的资料有很多,比如在提供的内容中提到了“Learning OpenGL ES for iOS”,这是一本专注于iOS平台上使用OpenGL ES进行3D图形编程的书籍。 Addison-Wesley Learning Series是计算机科学领域的一系列...
在本篇“Android OpenGL 学习笔记(一)”中,我们将探讨如何在Android平台上使用OpenGL ES进行图形渲染。OpenGL ES是OpenGL的一个轻量级版本,专为嵌入式系统设计,包括移动设备如智能手机和平板电脑。这篇笔记将...
本资源集合包含了一套完整的OpenGL学习资料,适合初学者入门。 首先,"OpenGL编程指南第七版"是学习OpenGL的基础书籍,它深入浅出地介绍了OpenGL的工作原理和基本概念,包括上下文创建、窗口系统集成、绘图函数、...
QT OpenGL学习是一个面向初学者和有一定基础的开发者的学习资源,主要关注如何在QT4框架下有效地使用OpenGL进行图形渲染和交互。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形,而QT则是一个强大的...
openGL 学习手册 自己从网上总结的 希望对大家有用
OpenGL 入门学习资料整理 OpenGL 作为当前主流的图形 API 之一,它在一些场合具有比 DirectX 更优越的特性。本文主要介绍了入门的基础知识。 一、OpenGL 的优点 1. 与 C 语言紧密结合 OpenGL 命令最初就是用 C ...
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、...
其次,《OpenGL编程指南》第七版,也被称为“红宝书”,是OpenGL学习的经典之作。这本书全面介绍了OpenGL 4.x版本,包括新的核心模式、固定功能管道的移除、向量和矩阵运算、着色语言GLSL、纹理、帧缓冲对象、几何...
这个“OPENGL学习 3D小雪人”资源是为初学者设计的,旨在帮助他们理解并掌握OpenGL的基础知识,通过创建一个3D小雪人的实例来实践。 3D小雪人的实现涉及多个OpenGL的关键概念和技术: 1. **窗口系统绑定**:在...
学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:VisualStudio2022配置OpenGL环境学习笔记OpenGL:...
qt+opengl视频学习资料72G qt+opengl视频学习资料72G qt+opengl视频学习资料72G qt+opengl视频学习资料72G qt+opengl视频学习资料72G qt+opengl视频学习资料72G qt+opengl视频学习资料72G qt+opengl视频学习资料72G ...