OpenGL ES 压缩纹理】的更多相关文章

什么是压缩纹理 在实际应用特别是游戏中纹理占用了相当大的包体积,而且GPU无法直接解码目前流行的图片格式,图片必须转换为RGB等类型的格式才能上传到GPU内存,这显然增加了GPU内存的占用.为了处理这些问题于是出现了GPU支持的压缩纹理格式,在GPU中进行解码.压缩纹理属于有损压缩,更在意解码速度,而编码在程序运行之前,因此速度较慢. 压缩纹理的常见格式 基于OpenGL ES的压缩纹理有常见的如下几种实现: 1)ETC1(Ericsson texture compression) 2)ETC2…
在之前成功绘制变色的几何图形之后,今天利用Openg ES的可编程管线绘制出第一张纹理. 学校时候不知道OpenGL的重要性,怕晦涩的语法.没有跟老师学习OpenGL的环境配置,现在仅仅能利用cocos2dx 2.2.3 配置好的环境学习OpenGL ES. 源码来自<cocos2d-x高级开发教程>,凝视是本人的. 要形成屏幕的像素也是个矩形(或者圆形区域) 所以我们仅仅要记住,MaxS是纹理宽度除以对于的屏幕像素点的宽度,也就是纹理铺放在x轴像素点个数,相应为纹理坐标的x轴 MaxT是纹理…
1.把纹理载入进OpenGL中 我们的第一个任务就是把一个图像文件的数据载入到一个OpenGL的纹理中. 作为開始.让我们又一次舍弃第二篇的框架.又一次创建一个程序,新建一个util工具包,在该包下创建一个新类TextureHelper,我们将以以下的方法签名開始: public static int loadTexture(Context context,int resourceId){} 这种方法会把Android上下文.和资源ID作为输入參数,并返回载入图像的OpenGL纹理的ID.開始时…
纹理可以理解为一个二维数组,它可以存储大量的数据,这些数据可以发送到着色器上.一般情况下我们所说的纹理是表示一副2D图,此时纹理存储的数据就是这个图的像素数据. 所谓的纹理贴图,就是使用Opengl将这个纹理数据渲染出来,这个过程有点像装修工人给墙体贴瓷砖,而瓷砖好比作纹理. 纹理坐标 如果为了将一副纹理图贴到Opengl绘制的一个矩形上,那么就需要解决一个问题,如何知道矩形的具体某个点对应纹理图的某个点呢?为了解决这个问题就引出了纹理坐标, 通过矩形的顶点坐标与纹理坐标关联,这样就明确了每个顶…
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLAM.Marker-Based还是GPS的方法,就不一而足了. 所以说要在手机上进行现实场景的展现也是目前AR应用一个比较重要的模块.一般来说,在移动端,基本上都是使用OpenGL ES进行绘制.所以我们优先考虑使用OpenGL ES进行相机的绘制.当然,有些应用直接利用iOS的UIImage进行相机…
为了搞透播放器的开发,花了些时间收集这些资料,虽然我已经搞定opengles渲染视频的内容,但是想玩玩opengles,往深里玩,图像处理这块是个好的方向,所以opengles是值得好好学的.   OpenGL ES教程原创系列 2011-12-18[iTyran原创]iPhone中OpenGL ES显示3DS MAX模型之二:lib3ds加载模型 2011-12-17[iTyran原创]GLKit 矩阵变换:自转公转 2011-12-02[iTyran原创]Xcode创建的默认iOS Open…
一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives) 在 OpenGL 的世界里,我们只能画点.线.三角形这三种基本图形,而其它复杂的图形都可以通过三角形来组成.所以这里的图元指的就是这三种基础图形: 点:点存在于三维空间,坐标用(x,y,z)表示. 线:由两个三维空间中的点组成. 三角形:由三个三维空间的点组成. 缓冲区(Buffers)Open…
前言 本文主要介绍了什么是VBO/VAO,为什么需要使用VBO/VAO以及如何使用VBO和VAO. VBO 什么是VBO VBO(vertex Buffer Object):顶点缓冲对象.是在显卡存储空间中开辟的一块区域,在显卡存储空间中开辟一块区域,用于存放顶点的各类属性信息.如顶点坐标.纹理坐标.顶点颜色等数据. 在渲染时直接从显VBO去取数据而不必与CPU进行数据交换. 为什么需要使用VBO 将顶点数据保存在内存中,在调用glDrawArrays或者glDrawElements等绘制方法前…
FBO介绍 FBO帧缓冲对象,它的主要作用一般就是用作离屏渲染,例如做Camera相机图像采集进行后期处理时就可能会用到FBO.假如相机出图的是OES纹理,为了方便后期处理, 一般先将OES纹理通过FBO转换成普通的2D纹理,然后再通过FBO等增加美颜等其他各种特效滤镜,最后将FBO一路流送进编码器进行编码,另外一路渲染到屏幕上进行预览显示. FBO总结起来就是可以暂时将未处理完的帧不直接渲染到屏幕上,而是渲染到离屏Buffer中缓存起来,在恰当的时机再取出来渲染到屏幕. FBO(Frame B…
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记(二)--平滑着色.自适应宽高及三维图像生成>中阐述的平滑着色.自适应宽高是为了实现在移动端模拟真实场景采用的方法,并且通过w分量增加了三维视角,在具体实现上采用了正交投影.透视投影的理论.本文将在此基础上,构建更加精美的三维场景.三维效果本质上是点.直线和三角形的组合,纹理是将图像或者照片覆盖到物体表面…
一.概念 一般说来,纹理是表示物体表面的一幅或几幅二维图形,也称纹理贴图(texture).当把纹理按照特定的方式映射到物体表面上的时候,能使物体看上去更加真实.当前流行的图形系统中,纹理绘制已经成为一种必不可少的渲染方法.在理解纹理映射时,可以将纹理看做应用在物体表面的像素颜色.在真实世界中,纹理表示一个对象的颜色.图案以及触觉特征.纹理只表示对象表面的彩色图案,它不能改变对象的几何形式.更进一步的说,它只是一种高强度的计算行为. 概括为一句就是:纹理贴图就是把一个纹理(对于2D贴图,可以简单…
本文主要演示OpenGL ES 3.0 纹理演示.接口大部分和2.0没什么区别,脚本稍微有了点变化而已. 扩展GLSurfaceView package com.example.gles300; import android.app.ActivityManager; import android.content.Context; import android.content.pm.ConfigurationInfo; import android.opengl.GLSurfaceView; im…
Sampler (GLSL) Sampler通常是在Fragment shader(片元着色器)内定义的,这是一个uniform类型的变量,即处理不同的片元时这个变量是一致不变的.一个sampler和一个texture对应,类型也是对应的,比如sampler2D 的sampler对应的就是GL_TEXTURE_2D类型的纹理对象.Sampler是个变量,但是它是没有值的,或者說是特殊的一种类型,讨论其数值没有意义,只要明确其同一个texture对应即可.sampler变量在shader内使用的地…
本文流程 1.Texturing基础 2.装载Texturing和mipmapping 3.纹理过滤和包装 4.Texture level-of-detail, swizzles, and depth comparison 3D 图像渲染最基础的操作是使用纹理,它经典应用是坐标系应用在图像的表面, 2D Textures 一个2D纹理是在OpenGL ES 应用中最基础和普遍的.它的坐标系是作(s, t),有时也写作(u,v),纹理的左下角在st坐标系中定义为(0.0,0.0).右上角定义为(1…
没想到原文出了那么多错别字,实在对不起观众了.介绍opengl es 2.0的不多.相信介绍基于Cocos2d-x学习OpenGL ES 2.0之多纹理的,我是独此一家吧.~~ 子龙山人出了一个系列:基于Cocos2d-x学习OpenGL ES 2.0.弄c++来搞cocos2dx的可以看看. 教程是参考iphone的教程来写的,坑点也有不少,最主要的坑点还是在版本.所以还是弄个cocos2dx 3.2比较好.前两天辉辉说cocos2dx 3.2也很操蛋,.h里声明的返回值在源码实现的时候返回类…
在上一篇文章中,我们介绍了如何绘制一个立方体,里面涉及的知识点有VBO(Vertex Buffer Object).IBO(Index Buffer Object)和MVP(Modile-View-Projection)变换. 本文将在基于Cocos2d-x学习OpenGL ES 2.0系列——使用VBO索引(4)的基础之上,添加纹理贴图支持.最后,本文会把纹理贴图扩展至3D立方体上面. 基本方法 当我们把一张图片加载到内存里面之后,它是不能直接被GPU绘制出来的,纹理贴图过程如下: 首先,我们…
想必很多人都见过DDS这种文件,它是一个“图片文件”,如果你安装了某些看图软件,你可以直接双击打开它来进行预览. 那么,这种DDS文件和我们常见的TGA/PNG之类的文件有何不同呢? DDS和TGA/PNG/JPG之类的“图片文件” 一样,支持“压缩”,减少磁盘空间占用(把文件变小). 通常我们要加载一个TGA或者PNG文件到OpenGL的时候,都要先把文件数据还原成RGB格式的像素数据,然后用glTexImage2D把像素数据传到显存.这个过程相当于“解压”,这通常非常消耗CPU资源,速度较慢…
开发框架介绍请參见:Opengl ES NDK实例开发之中的一个:搭建开发框架 本章在第三章(Opengl ES 1.x NDK实例开发之三:多边形的旋转)的基础上演示怎样使用纹理贴图,分别实现了三角形纹理贴图和正方形纹理贴图. [实例解说] OpenglES要求生成纹理的图片长宽为2的n次方.支持各种格式(BMP, GIF, JPEG, PNG...) 本例中使用的图片为png格式,尺寸为128*128 本例中,在上层GLJNIView.java中生成纹理.将纹理句柄传递给Native层进行绘…
http://www.educity.cn/wenda/92368.html OpenGL ES教程VI之纹理贴图(原文对照) OpenGL ES Tutorial for Android – Part VI – Textures December 30th, 2010 by Per-Erik Bergman — Android, Embedded, Java Last tutorial we worked a bit more on meshes and we have also talked…
开发框架介绍请參见:Opengl ES NDK实例开发之中的一个:搭建开发框架 本章在第六章(Opengl ES 1.x NDK实例开发之六:纹理贴图)的基础上绘制一个旋转的纹理立方体,原理和纹理贴图一样,须要注意的是定好正方体的顶点数组. [实例解说] 本实例加入了一个显示fps的小功能,在java层实现,原理是统计一分钟内屏幕刷新的次数 [实例源代码] [GLJNIActivity.java] /* * Copyright (C) 2007 The Android Open Source P…
1.理解纹理 OpenGL中的纹理能够用来表示图像.照片,甚至由一个数学算法生成的分形数据.每一个二维的纹理都由很多小的纹理元素组成.它们是小块的数据,类似于我们前面讨论过的片段和像素.要使用纹理,最经常使用的方式是直接从一个图像文件载入数据. 每一个二维纹理都有其自己的坐标空间,其范围是从一个拐角的(0,0)到还有一个拐角的(1.1).依照惯例,一个维度叫做S,而还有一个称为T.当我们想要把一个纹理应用于一个三角形或一组三角形的时候.我们要为每一个顶点指定一组ST纹理坐标,以便OpenGL知道…
前言 1:常用类: 1:纹理的作用 正文 一:常用类 上下文 顶点数据缓存 着色器 baseEffect 一:纹理 1.1:   纹理可以控制渲染的每个像素的颜色. 1.2: 纹素:与像素一样,保存每个像素的颜色数据.纹素是一个没有尺寸的坐标系.    纹素坐标系有1D.2D.3D坐标系.目前最常见的是2D坐标系. 1.3: 视口(viewPort)坐标 GPU会把纯数学OpenGL ES坐标系中的每个顶点的X.Y.Z坐标转化成帧缓存中所对应的真实像素位置.帧缓存中的像素位置就叫        …
在OpenGL中绘制的时候,有时候想使新画的颜色和已经有的颜色按照一定的方式进行混合.例如:想使物体拥有半透明的效果,或者绘制叠加光亮的效果,这时候就需要用到OpenGLES混合. 如上图所示,为石头墙.绿色矩形.蓝色云彩 三个矩形混合后的展示效果.三个矩形(Z轴深度由深到浅)分别为,石头墙.绿色矩形.蓝色云彩. 一.混合API 在OpenGLES中若使用混合,需要用到API函数方法(Java): void glBlendFunc( int srcfactor, int destfactor )…
在这篇文章中,我们将学习如何在openGL中使用纹理贴图. penGL中纹理可以分为1D,2D和3D纹理,我们在绑定纹理对象的时候需要指定纹理的种类.由于本文将以一张图片为例,因此我们为我们的纹理对象绑定一个GL_TEXTURE_2D的纹理. 本文将分为两个部分,一部分是如何通过图片获取一个2D的纹理,另一部分是如何使用一个纹理. 在上一篇中,我们介绍了如何使用shader来绘制一个多边形,本文是基于上一篇的提高,我们也将继续使用shader,对于shader使用不熟的童鞋可以看上一篇. 首先我…
介绍了各种移动设备所使用的GPU,以及各个GPU所支持的压缩纹理的格式和使用方法.1. 移动GPU大全 目前移动市场的GPU主要有四大厂商系列:1)Imagination Technologies的PowerVR SGX系列 代表型号:PowerVR SGX 535.PowerVR SGX 540.PowerVR SGX 543MP.PowerVR SGX 554MP等 代表作  :Apple iPhone全系.iPad全系,三星I9000.P3100等2)Qualcomm(高通)的Adreno…
电脑或者手机上做图像处理有很多方式,但是目前为止最高效的方法是有效地使用图形处理单元,或者叫 GPU.你的手机包含两个不同的处理单元,CPU 和 GPU.CPU 是个多面手,并且不得不处理所有的事情,而 GPU 则可以集中来处理好一件事情,就是并行地做浮点运算.事实上,图像处理和渲染就是在将要渲染到窗口上的像素上做许许多多的浮点运算. 通过有效的利用 GPU,可以成百倍甚至上千倍地提高手机上的图像渲染能力.如果不是基于 GPU 的处理,手机上实时高清视频滤镜是不现实,甚至不可能的. 着色器 (s…
转自: http://wiki.eoe.cn/page/Building_an_OpenGL_ES_Environment.html 负责人:zhangql原文链接:http://docs.eoeandroid.com/training/graphics/opengl/environment.html 要用OpenGl ES在应用程序中绘制图像,首先你要创建与之对应的视图容器.当中最直接的方法就是使用GLSurfaceView和GLSurfaceView.Renderer接口.GLSurface…
<OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Graphics Programming 作者: (美)Erik M.Buck 译者: 徐学磊 丛书名: 华章程序员书库 出版社:机械工业出版社 ISBN:9787111428671 上架时间:2013-6-19 出版日期:2013 年6月 开本:16开 页码:1 版次:1-1 所属分类:计算机 > 软件与程…
Android 支持 OpenGL 列表 1.GL 2.GL 10 3.GL 10 EXT 4.GL 11 5.GL 11 EXT 6.GL 11 ExtensionPack 我们将使用 GL10 这个类开始接触 OpenGL,探索3D 领域. javax.microedition.khronos.opengles 接口GL10 上级接口:GL 下级接口:GL11 公共接口GL10继承于GL GL10接口包含了Java(TM)程序语言为OpenGL绑定的核心功能.OES_byte_coordin…
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/graphics/opengl/environment.html 要在你的应用中使用OpenGL ES绘制图像,你必须为它们创建一个视图容器.一个比较直接的方法是同时实现一个GLSurfaceView和一个GLSurfaceView.Renderer.GL…