opengl

详解Android开发中硬件加速支持的使用方法

12-04
Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存.       开启或关闭硬件加速:       由于硬件加速自身并非完美无缺,所以Android提供选项来打开或者关闭硬件加速,默认是关闭.可以在4个级别上打开或者关闭硬件加速:       Application级别:<applicationandroid:hardwareAccelerated="true" ...>  

Android基于OpenGL的GLSurfaceView创建一个Activity实现方法

11-29
本文实例讲述了Android基于OpenGL的GLSurfaceView创建一个Activity实现方法.分享给大家供大家参考,具体如下: Android提供了两个基本的类让我们使用OpenGL ES API来创建和操纵图形:GLSurfaceView和 GLSurfaceView.Renderer.因此我们首先需要了解这两个类. 1. GLSurfaceView: 这是一个视图类,你可以调用OpenGL API在上面绘制图形和操纵物体,功能和SurfaceView相似.我们可以创建一个GLSu

Pitch,Yaw,Roll的概念

01-22
在航空中,pitch, yaw, roll下图所示. pitch是围绕X轴旋转,也叫做俯仰角. yaw是围绕Y轴旋转,也叫偏航角. roll是围绕Z轴旋转,也叫翻滚角.     在3D系统中,假设视点为原点,则视点坐标系如下图所示,通常z轴的负方向是视点方向(OpenGL).

OpenGL和D3D11中的深度模版测试

01-21
    在OpenGL和D3D11的管线中,像素shader之后的操作就是深度模版测试,深度模版测试是以sample为单位进行的,就是一个像素上可以有多个采样点,每个采样点都有深度信息.深度模版测试对每个采样点都要进行一次,如果是msaa,最后要对每次采样的像素结果进行resolve,得到最终的结果.在下面的链接中有msaa的介绍. http://www.cnblogs.com/mikewolf2002/archive/2012/11/22/2783235.html     深度模版测试的流程如

opengl 教程(23) shadow mapping (1)

03-11
   原帖地址:http://ogldev.atspace.co.uk/www/tutorial23/tutorial23.html          当光投射到物体上时,会在地面或者墙壁等物体上产生阴影.在计算机图形学中,有很多种技术可以产生阴影,本篇教程中,我们学习一种最常用的阴影技术-shadow mapping.       对于OpenGL程序中的阴影问题,可以归结为:如何判定一个像素是否在阴影区域.简单的说,我们可以把像素的位置和光源的位置连接起来(如下图所示),如果连接线通过物体(

opengl 教程(21) 聚光灯

01-26
原帖地址:http://ogldev.atspace.co.uk/www/tutorial21/tutorial21.html      本篇教程中,我们来学习聚光灯的的光照效果,聚光灯有光源位置,也会随着传播距离增加而衰减,还有照射方向,另外聚光灯增加的特性是,它的照射范围在一个圆锥内,类似探照灯的效果. 下图显示了聚光灯的效果:        聚光灯的方向用黑色的箭头L表示,而我们的光照效果将会限制在两条红线内.我们可以通过光线方向,和红线的夹角来定义光照范围,对于视线向量V,我们可以用L和

opengl 教程(20) 点光源

01-26
原帖地址: http://ogldev.atspace.co.uk/www/tutorial20/tutorial20.html       前面的教程中,我们在方向光的前提下,研究了基本的光照模型(环境光,漫反射光,高光).方向光没有起点,所有光线都是沿着一个方向,它的强度不会随着距离的增加有任何变化.本篇教程中,我们开始研究点光源,点光源是起始于一个点,向四面照射,会随着传输距离增加而衰减,所以在点光源属性中,我们会增加一个光源位置. 通常点光源衰减程度离物体距离的平方成反,如下面的公式:

opengl 教程(17) 环境光

01-20
原帖地址:http://ogldev.atspace.co.uk/www/tutorial17/tutorial17.html       在3D真实感图形学中,光照是很重要的技术.从物理上讲,一束光是由很多细小的粒子"光子"组成,这些光子在空气中传输,在物体的表面折射,反射,最终进入我的视觉系统,形成了我们眼中看到的真实世界.在编程中,我们不可能模拟所有光子的行为,所以如何对光照进行建模,模拟出它的真实效果,是计算机图形学中一个永恒的话题       在各种paper中,人们已经提出

opengl 教程(15) 摄像机控制(2)

01-17
原帖地址:http://ogldev.atspace.co.uk/www/tutorial15/tutorial15.html       本篇教程中,我们将实现鼠标控制摄像机的方位.摄像机可以有多个自由度(所谓自由度,是指沿着某个方向的移动或旋转等操作,通常一个自由度用一个参数表示),不同的应用所需要的摄像机模式不同,所需要的自由度也不同,比如第一人称射击游戏和普通RPG游戏摄像机模式就不同.在第一人称射击游戏摄像机中,我们需要摄像机在原地转360度(沿y轴旋转360度,模拟人头的转动),另外

opengl 教程(14) 摄像机控制(1)

01-15
原帖地址:http://ogldev.atspace.co.uk/www/tutorial14/tutorial14.html       前面一篇教程中,我们把摄像机放在三维空间的固定位置,本章我们尝试控制摄像机,在三维空间任意方向移动它.我们用键盘来控制摄像机的位置,用鼠标来改变摄像机lookat的方向,这个有点类似第一人称射击游戏中的摄像机控制.本章先来学习一下用键盘控制摄像机位置,下章来学习鼠标改变摄像机方位.       注意:我们用键盘移动的时候,仅仅是改变摄像机的位置,并没有改变l

opengl 教程(12) 投影矩阵

01-15
原帖地址:http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html        现在我们开始学习如何把三维物体投影到二维平面上,同时保持它的深度.通常的投影包括平行投影和透视投影:平行投影比较简单,就是把顶点垂直的投向投影平面,常用在cad或者机械制图中.另外一种投影是透视投影,这种投影能较好的使二维投影显示立体感,因为人眼观看物体符合透视原理,透视原理也是学美术的人的必修课程.最常见的透视原理表现形式就是三维世界的平行线在透视几何中

opengl 教程(11) 平移/旋转/缩放

01-12
原帖地址:http://ogldev.atspace.co.uk/www/tutorial11/tutorial11.html       在前面的教程中,我们通过矩阵变化实现了物体在三维空间的平移.旋转.缩放操作.在本篇教程中,我们来实现这三种的变化的组合操作.通常情况下,我们会先缩放三维模型,使得它和其它物体大小相匹配,然后会旋转该物体,使得它朝向正确的方向,最后则是平移操作.为了实现上述操作,我们只需把三个变化矩阵相乘,就得到了最终的变化矩阵,该矩阵乘以顶点坐标向量,就得到变化后的坐标位置

opengl 教程(10) index draw

01-12
原帖地址:http://ogldev.atspace.co.uk/www/tutorial10/tutorial10.html         OpenGL提供了几个draw函数: 之前用的 glDrawArrays() 称作ordered draws(顺序的draw调用),如果指定draw体元为线,则顶点缓冲中按排列顺序,每2个顶点解释为线,如果体元为三角形,每三个顶点解释为三角形,在这里并没有共享的概念,比如要渲染一个四边形,就要画2个三角形,需要6个顶点.通过indexed draws,我

opengl 教程(9) 顶点属性插值

01-12
原帖地址:http://ogldev.atspace.co.uk/www/tutorial09/tutorial09.html         本章我们了解3D管线的一个重要特性,在光栅化阶段的顶点属性插值.从前面的教程我们知道,为了在屏幕上输出渲染的物体,我们在顶点shader中输出gl_Position,这是一个四维向量,表示齐次空间的顶点坐标,x,y,z都经过了透视除法,除以了w值,x.y的范围是[-1,1],而z的范围是[0,1],而w则成为了1.0(因为w/w的缘故),接着会进行视口变

opengl 教程(8) 物体缩放

01-12
原帖地址:http://ogldev.atspace.co.uk/www/tutorial08/tutorial08.html         缩放矩阵比较简单,它的目的就是在三个轴(x,y,z)方向,对物体长度进行缩放(或者说,对顶点在三个轴的分量进行缩放),当然也可以选择某个轴方向来缩放.对物体进行缩放的原因主要是用来匹配世界空间不同物体的大小,因为三维物体建模都是在模型空间,通常(x,y,z)的范围都是(0,1),而世界空间中,物体有大有小,比如小树和大楼,这就需要我们对这些模型进行缩放操

opengl 教程(7) 旋转变化

01-12
原帖地址:http://ogldev.atspace.co.uk/www/tutorial07/tutorial07.html       本章我们来学习一下,物体的旋转.所谓旋转,就是一个点,绕某个固定的轴转动一定的角度.在笛卡尔坐标系中,我们绕某个主轴转动时候,会保持该轴决定的分量不变,比如绕z轴旋转,z坐标分量不变,x,y分量变化,所以又称绕xy平面旋转,当然,我们也可以绕任意向量进行旋转操作. 我们通过下面的图来了解一下旋转矩阵是如何产生的? 沿着圆把顶点从位置(x1,y1)移动到(x2

opengl 教程(3) 在窗口画三角形

01-08
    原文地址:http://ogldev.atspace.co.uk/www/tutorial03/tutorial03.html       本教程内容很少,主要是在教程2基础上渲染一个三角形.    在前面一个教程中,我们在归一化的裁剪空间中定义一个顶点,这样就省去一些坐标变化操作,但不能省去的操作是视口变化.我们从z轴正方向向负方向看去,裁剪空间类似下图的样子,裁剪空间盒子中的三维物体先投影到该平面上,然后通过视口变化映射到屏幕空间,点(-1.0,1.0)被映射到屏幕的左上角,(-1.

视图矩阵的推导

11-25
        把物体从世界坐标系转化到视点坐标系的矩阵称为视图矩阵.      下面我们先看下OpenGL中视图矩阵的推导过程:      假设视点或camera的局部坐标系为UVN,UVN分别指向右方.上方和后方从而构成右手坐标系,视点则处于局部坐标系的原点位置.      就如OpenGL中的函数gluLookAt(eyex, eyey, eyez, lookatx, lookaty, lookatz, upx, upy, upz)一样,给定视点.观察点.以及up向量之后,我们就可以求得视

D3D的投影矩阵推导[转贴]

11-25
原帖地址:http://blog.csdn.net/popy007/article/details/4091967       上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视投影矩阵的生成方法.正如我们所说,不同的图形API因为左右手坐标系.行向量列向量矩阵以及变换范围等等的不同导致了矩阵的差异,可以有几十个不同的透视投影矩阵,但它们的原理大同小异.这次我们准备讨论一下Direct3D(以下简称D3D)的透视投影矩阵,主要出于以下几个目的: (1) 我们在写图形引擎的时

opengl 教程(1) 创建窗口

10-23
本章教程内容主要来自:http://ogldev.atspace.co.uk/www/tutorial01/tutorial01.html 使用OpenGL之前,请先安装和设置好FreeGlut和glew, 下载地址: http://freeglut.sourceforge.net/ http://glew.sourceforge.net/   原教程源码下载地址:http://ogldev.atspace.co.uk/ogldev_win.zip          OpenGL做为3D图形接口