定义形状 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/shapes.html 在一个OpenGL ES View的上下文(Context)中定义形状,是创建你的杰作所需要的第一步.在了解关于OpenGL ES如何定义图形对象的基本知识之前,通过OpenGL ES 绘图可能会有些困难. 这节课将讲解OpenGL ES相对于Android设备屏幕的坐标系,定义形状和形状表面的基本知识,如定义一个三角形和一个矩…
绘制形状 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/draw.html 在定义了使用OpenGL绘制的形状之后,你可能希望绘制出它们.使用OpenGL ES 2.0绘制图形可能会比你想象当中更复杂一些,因为API中提供了大量对于图形渲染流程的控制. 这节课将解释如何使用OpenGL ES 2.0接口画出在上一节课中定义的形状. 初始化形状 在你开始绘画之前,你需要初始化并加载你期望绘制的图形.除非你所使…
openGL是一个强大的底层图形库,其命令最初的时候使用C语言实现的.openGL定义了一个图形程序接口,常用于制作处理三维图像,功能强大,调用方便,在图像处理十分受欢迎. 实现图形主要使用的是openGL的一个工具包:GLUT. GLUT (pronounced like the glut in gluttony) is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL prog…
分类: sql编程:标准的sql 编程 * 纯sql 在标准的编程中又分为 sqlserver-->T-sql oracle-->pl-sql(扩展) 变量:在使用变量之前先定义 声明变量 sql 格式: declare 变量名 数据类型变量的分类:局部变量 全部变量局部变量:由程序员定义在一个程序内部使用的所有的局部变量名都必须以@符最为前缀//例子declare @num nvarchar(5) 一个 declare 可以定义多个变量 用,隔开2.为变量赋值=变量值a.set 变量名这次赋…
简述 1. OpenGL用到的库分为OpenGL核心库.OpenGL实用库.OpenGL辅助库和OpenGL工具库(不是必须) 2. OpenGL核心库 核心库包含有115个函数,函数名的前缀为gl 这部分函数用于常规的.核心的图形处理,由gl.dll来负责解释执行.由于许多函数可以接收不同数据类型的参数,因此派生出来的函数原形多达300多个 核心库中的函数主要可以分为以下几类函数: 1)绘制基本几何图元的函数 如绘制图元的函数glBegin().glEnd().glNormal*().glVe…
我们把OpenGL里模型的三维坐标往二维坐标的转化称为投影,则屏幕上的二维坐标往三维坐标转化则可以称为反投影,下面我们来介绍一下反投影的方法. 主要是gluUnProject函数的使用,下面是代码: void screen2GLPoint() { int x = xCord; /* 屏幕坐标 */ int y = yCord; GLint viewport[4]; GLdouble mvmatrix[16], projmatrix[16]; GLfloat winx, winy, winz; G…
OpenGL综述 September 14, 2014 学习OpenGL是学习计算机图形学的一个工具,因为计算机上图形的显示要依靠底层的软件和硬件,学习图形学除了学习基本的概念,线,曲面,图形生成,变换,渲染这些,做三维的图形图像显示时,从操作系统和驱动这一底层设计起显然费时不切实际,所以我们需要一套高级的图形接口. 我们可以认为 Opengl 就是这样的一个 API,OpenGL 有多种语言绑定,但是最终地最底层是一个 C 语言的 API接口.这组 API由一些 typedef,#define…
如果使用一般的纹理过滤,当观察方向跟模型表面不是相互垂直的的情况下,会出现纹理信息的丢失,表现为图像看上去比较模糊,如下图所示,远处场景的细节信息很差: 针对这种情况,可以采用同向异性过滤的方式处理纹理,在过滤纹理的时候,考虑到观察角度不同,使纹理本身沿着模型表面倾斜的方向进行延伸. 使用如下语句查询当前系统支持的最大同向异性过滤的数值,数值越大,表示沿着最大变化方向所采样的纹理单元越多,显示效果就越好: GLfloat max_TexAni; //查询允许的各向异性数量 glGetFloatv…
1. 改变点的大小 OpenGL中默认点的大小是1个像素,使用函数glPointSIze可以调整点的大小,入参是GLfloat,相当于是浮点数. 相关代码: void myDisplay(void) { //设置点的大小 glClear(GL_COLOR_BUFFER_BIT); glPointSize(5); //设置点的大小为5个像素 glColor4f(0,0,1,0); //设置颜色为蓝色 glBegin(GL_POINTS); //绘制点 glVertex2f(0,0); glVert…
当纹理被用于渲染一个面积比它本身小很多的对象时,会由于纹理图像的降采样率不足而导致混叠现象,主要的表现特征是纹理图像的闪烁,出现纹理躁动.特别是在场景远近移动变换时,这种闪烁情况更为明显,严重可能会影响到模型的视觉质量.一个纹理躁动的示例如下: 上图中可以看到,近处的场景渲染比较清晰,但是远处的纹理出现很多碎点,并且随着场景的远近变化,这种碎点闪烁现象也在无规律的躁动变化,影响视觉体验. 针对这种情况,可以采用Mip贴图模式.Mip贴图的原理是在加载纹理时加载本纹理图像在不同压缩尺度下的多幅纹理…
转:http://blog.csdn.net/junzia/article/details/52842816 前面几篇博客,我们将了Android中利用OpenGL ES 2.0绘制各种形体,并在上一篇博客中专门讲了GLSL语言.但是我们看到的基于OpenGL开发的应用和游戏,可不仅仅是那些规则形体和一些简单的色彩构成,而是各种不规则的形体构成了现实世界或者卡通世界的人和事物,他们都是外面穿着漂亮“衣服”的.本篇博客就是来讲解这些“衣服”的基础的.这些衣服就是纹理贴图. 什么是纹理贴图 一般说来…
运用投影与相机视角 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/projection.html 在OpenGL ES环境中,利用投影和相机视角可以让显示的绘图对象更加酷似于我们用肉眼看到的真实物体.该物理视角的仿真是对绘制对象坐标的进行数学变换实现的: 投影(Projection):这个变换会基于显示它们的GLSurfaceView的长和宽,来调整绘图对象的坐标.如果没有该计算,那么用OpenGL ES绘…
1. The control points are attributes on the shape which are usually arrays of points. Control points become interactive, i.e. they can be selected and manipulated, by associating the control point attributes with a component.Components are objects (M…
直线或者三角形上的每个片段混合后的颜色可以用一个varying生成.我们不仅能混合颜色,还可以给varying传递任何值,OpenGL会选择属于那条直线的两个值,或者属于那个三角形的三个值,并平滑地在那个基本图元上混合这些值,每个片段都会有一个不同的值.这种混合是使用线性插值实现的.要了解它是怎么工作的,让我们首先以一条直线为例开始讲解. 1.沿着一条直线做线性插值 假设有一条直线,它有一个红色顶点和一个绿色顶点,我们要从一个向另外一个混合颜色. 在这条直线的左边,每个片段的颜色更多地呈红色:随…
                              搞了一下午,终于做了几个Demo出来,下面我就说一下我对React-Native下的OpenGL的流畅度的体验吧. 我使用的测试机是坚果手机,配置还算可以,当下主流配置,小米3,然后是我几年前买的联想A820T,一款1G运行内存的四核手机,iPhone5,Genymotion模拟器和iOS模拟器. 对于前面的三种简单的动画效果,所有的测试机,操作体验还是很流畅的. 最后一种相对复杂的动画,我对比了一下,其中iphone5的运行流畅度是最…
定义接口 从技术上讲,接口是一组包含了函数型方法的数据结构.通过这组数据结构,客户代码可以调用组件对象的功能. 定义接口的一般形式为: [attributes] [modifiers] interface identifier [:base-list] {interface-body}[;] 说明: 1.attributes(可选):附加的定义性信息. 2.modifiers(可选): 允许使用的修饰符有 new 和四个访问修饰符.分别是:new.public.protected.interna…
1. 新建一个工程,新建一个头文件Shader.h,内容如下: #ifndef _SHADER_H_ #define _SHADER_H_ #include <vector> #include <string> #include <cstring> #include <GL/glew.h> class Shader { public: static GLuint createShader(GLenum eShaderType, const std::stri…
开启深度测试后OpenGL就不会再去绘制模型被遮挡的部分,这样实现的显示画面更为真实,但是由于深度缓冲区精度的限制,对于深度相差非常小的情况(例如在同一平面上进行两次绘制),OpenGL就不能正确判定两者的深度值,会导致深度测试的结果不可预测,显示出来的现象时交错闪烁的前后两个画面,这种情况称为z-fighting. 在旋转(深度值发生变化)的情况下表现的更为明显,如下图所示:     应对这种情况的办法是使用glPolygonOffset给当前绘制对象设置一个深度偏移,函数原型是: void…
OpenGL的glut中使用glutMouseFunc函数注册鼠标响应事件,使用glutKeyboardFunc函数注册键盘响应事件,对键盘上特殊的4个方向按键的响应函数是glutSpecialFunc. 方向键响应事件的实现函数的格式是void SpecialKey(GLint key,GLint x,GLint y): 其中key对应4个方向按键,上下左右按键分别对应于GLUT_KEY_UP.GLUT_KEY_DOWN.GLUT_KEY_LEFT和GLUT_KEY_RIGHT: x和y是捕捉…
响应触摸事件 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/touch.html 让对象根据预设的程序运动(如让一个三角形旋转),可以有效地引起用户的注意,但是如果希望让OpenGL ES的图形对象与用户交互呢?让我们的OpenGL ES应用可以支持触控交互的关键点在于,拓展GLSurfaceView的实现,重写onTouchEvent()方法来监听触摸事件. 这节课将会向你展示如何监听触控事件,让用户旋转…
添加移动 编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/motion.html 转:http://hukai.me/android-training-course-in-chinese/graphics/opengl/motion.html 在屏幕上绘制图形是OpenGL的一个基本特性,当然我们也可以通过其它的Android图形框架类做这些事情,包括Canvas和Drawable对象.OpenGL ES的特…
编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/environment.html 要在应用中使用OpenGL ES绘制图像,我们必须为它们创建一个View容器.一种比较直接的方法是实现GLSurfaceView类和GLSurfaceView.Renderer类.其中,GLSurfaceView是一个View容器,它用来存放使用OpenGL绘制的图形,而GLSurfaceView.Renderer则用来控制在该…
javascript定义函数(声明函数)可以有三种方法:正常方法.构造函数.函数直接量 <html><head></head><body> <script type="text/javascript"> /*javascript定义函数(声明函数)可以有三种方法:正常方法.构造函数.函数直接量.*/ /*1.正常方法 function(param){}*/ function print(msg) { document.writ…
原文:http://blog.chinaunix.net/uid-20638550-id-1909184.html  分类: 十一.位图与图像 11.1.位图 11.1.1 位图(Bitmap)与字符(Font) 位图是以元素值为0或1的矩阵形式存储的,通常用于对窗口中相应区域的绘图屏蔽.比如说,当前颜色设置为红色,则在矩阵元素值为1的地方象素用红色来取代,反之,在为0的地方,对应的象素不受影响.位图普遍用于字符显示,请看下面例子: 例11-1 位图字符例程(font.c) #include "…
在上篇文章,我们能够配置好基本的Android OpenGL 使用的环境.但是如果我们不了解OpenGL ES如何定义图像的一些基本知识就使用OpenGL ES进行绘图还是有点棘手的.所以能够在OpenGL ES的View里面定义要绘制的形状是进行高端绘图操作的第一步. 本文主要做的事情就是为了讲解Android设备屏幕相关的OpenGL ES坐标系统,定义形状,形状面的基础知识,以及定义三角形和正方形. 一.定义三角形 OpenGL ES允许你使用三维空间坐标系定义绘制的图像,所以你在绘制一个…
一.OpenGL简介 众所周知,OpenGL原先是Silicon Graphics Incorporated(SGI公司)在他们的图形工作站上开发高质量图像的接口.但最近几年它成为一个非常优秀的开放式三维图形接口.实际上它是图形软件和硬件的接口,它包括有120多个图形函数,"GL"是"GRAPHIC LIBRARY"的缩写,意思是“图形库”.OpenGL的出现使大多数的程序员能够在PC机上用C语言开发复杂的三维图形.微软在Visual C++ 7中已提供了三个Ope…
如果要得到pose视图,除非有精密的测量方法,否则进行大量的样本采集时很耗时耗力的.可以采取一些取巧的方法,正如A Survey on Partial of 3d shapes,描述的,可以利用已得到的3D模型,利用投影的方法 (page10-透视投影或者正射投影),自动得到精确的3D单向视图. 其中的遇到了好几个难题:透视投影的视角问题:单侧面的曲面补全问题(曲面插值问题):pose特征的描述性问题. 一篇文章看完视觉及相关通略. 先普及一下基础知识: 一:图像处理.计算机图形学.计算机视觉和…
之前写过一篇博客,OpenGL管线(用经典管线代说着色器内部),说的主要是OpenGL的经典管线.大家都知道,现代OpenGL已经弃用(从OpenGL 3.0开始)经典管线功能(glBegin,变换矩阵,光照,雾,纹理坐标自动生成,等),这些功能可以在需要时由着色器实现.现代OpenGL分为core profile和compatibility profile两个版本(文献[1]Appendix D p682),core profile不包含任何弃用功能,而compatibility profil…
一.准备工作 创建Empty Project,为了能够使用OpenGL的库函数,需要把相关的库连接到项目中: 1.首先添加库的路径 如上,可以把需要添加的include.lib放到一起比较方便管理 这时候,VS就能找到所有需要的文件了. 2.然后把相关库链接到项目中,   注:GLFW是一个C写的专门用于OpenGL开发的库,它只提供把物体渲染到屏幕所需的必要功能.它可以给我们创建一个OpenGL环境,定义窗口参数,以及相应用户输入,这些都是必要的功能. 本节使用GLFW,但是链接的时候除了GL…
这篇笔记完全参照<OpenGL.ES.3.0.Programming.Guide.2nd.Edition>,摘出部分内容只为学习参考. 为什么要用英文:无论是D3D的SDK还是OES的Spec,都是全英文的,学图像的总是要能看懂的.此外,本人的英语和中文水平有限,翻译的很粗糙,大家可以看原文. 为什么要用中文:一来增强一下自己的理解,二来能够分享给大家,希望能找到更多的人相互讨论学习. 1. Overview 1.1 Pipeline OpenGL ES 3.0 implements a gr…