OPENGL_SHARDER 实现美颜功能
来源:互联网 发布:pat端口地址转换 编辑:程序博客网 时间:2024/05/01 23:21
http://blog.csdn.net/racehorse/article/details/6616256
http://blog.csdn.net/wl_soft50/article/details/7916720
http://blog.csdn.net/zhouxuguang236/article/category/1588599
http://blog.csdn.net/racehorse/article/details/6664775
OpenGL 数据类型
首先我们要讨论的是OpenGL的数据类型。因为OpenGL是一个跨平台的API,数据类型的大小会随使用的编程语言以及处理器(64位,32位,16位)等的不同而不同,所以OpenGL定义了自己的数据类型。当传递数据到OpenGL时,你应该坚持使用这些OpenGL的数据类型,从而保证传递数据的尺寸和精度正确。不这样做的后果是可能会导致无法预料的结果或由于运行时的数据转换造成效率低下。不论平台或语言实现的OpenGL都采用这种方式定义数据类型以保证在各平台上数据的尺寸一致,并使平台间OpenGL代码移植更为容易。
下面是OpenGL的各种数据类型:
- GLenum: 用于GL枚举的无符号整型。通常用于通知OpenGL由指针传递的存储于数组中数据的类型(例如,GL_FLOAT用于指示数组由GLfloat组成)。
- GLboolean: 用于单布尔值。OpenGL ES还定义了其自己的“真”和“假”值(GL_TRUE和GL_FALSE)以避免平台和语言的差别。当向OpenGL传递布尔值时,请使用这些值而不是使用YES或NO(尽管由于它们的定义实际没有区别,即使你不小心使用了YES或NO。但是,使用GL-定义值是一个好的习惯。)
- GLbitfield: 用于将多个布尔值(最多32个)打包到单个使用位操作变量的四字节整型。我们将在第一次使用位域变量时详细介绍,请参阅 wikipedia
- GLbyte: 有符号单字节整型,包含数值从-128 到 127
- GLshort: 有符号双字节整型,包含数值从−32,768 到 32,767
- GLint: 有符号四字节整型,包含数值从−2,147,483,648 到 2,147,483,647
- GLsizei: 有符号四字节整型,用于代表数据的尺寸(字节),类似于C中的size_t
- GLubyte: 无符号单字节整型,包含数值从0 到 255。
- GLushort: 无符号双字节整型,包含数值从0 到 65,535
- GLuint: 无符号四字节整型,包含数值从0 到 4,294,967,295
- GLfloat: 四字节精度IEEE 754-1985 浮点数
- GLclampf: 这也是四字节精度浮点数,但OpenGL使用GLclampf特别表示数值为0.0 到 1.0
- GLvoid: void值用于指示一个函数没有返回值,或没有参数
- GLfixed: 定点数 使用整型数存储实数。由于大部分计算机处理器在处理整型数比处理浮点数快很多,这通常是对3D系统的优化方式。但因为iPhone具有用于浮点运算的矢量处理器,我们将不讨论定点运算或GLfixed数据类型。
- GLclampx: 另一种定点型,用于使用定点运算来表示0.0 到 1.0之间的实数。正如GLfixed,我们不会讨论或使用它。
OpenGL ES (至少iPhone目前所使用的版本)不支持8字节(64位)数据类型,如long或double。OpenGL 其实具有这些大型数据类型,但考虑到大部分嵌入式设备屏幕尺寸以及可能为它们所写的程序类型而且使用它们有可能对性能造成不利的影响,最后的决定是在OpenGL ES中排除这些数据类型。
SHARDER(着色器)使用
在OpenGL整个程序的初始化阶段(一般是init()函数),做以下工作。
1、顶点着色程序的源代码和片段作色程序的源代码要分别保存到一个字符数组里面;
2、使用glCreateshader()分别创建一个顶点着色器对象和一个片段着色器对象;
3、使用glShaderSource()分别将顶点着色程序的源代码字符数组绑定到顶点着色器对象,将片段着色程序的源代码字符数组绑定到片段着色器对象;
4、使用glCompileShader()分别编译顶点着色器对象和片段着色器对象;
5、使用glCreaterProgram()创建一个(着色)程序对象;
6、使用glAttachShader()分别将顶点着色器对象和片段着色器对象附加到(着色)程序对象上;
7、使用glLinkProgram()对(着色)程序对象执行链接操作
8、使用glValidateProgram()对(着色)程序对象进行正确性验证
9、最后使用glUseProgram()将OpenGL渲染管道切换到着色器模式,并使用刚才做好的(着色)程序对象。
然后,才可以提交顶点。
http://blog.csdn.net/vampirem/article/details/12152691
http://www.cnblogs.com/flytrace/p/3387748.html 法线贴图
http://www.tuicool.com/articles/VZVJra
http://www.cnblogs.com/sanjin/p/3580331.html
http://blog.csdn.net/lovehota/article/details/7407507
加载纹理与使用glGenTextures时应注意的一点(解决吃内存)[转]
- OPENGL_SHARDER 实现美颜功能
- 美颜功能资料整理
- 美颜主要代码实现
- Opencv 简单的美颜实现方案
- Camera Filter 美颜相机的实现
- Android -- 小功能 仿美图秀秀(美颜相机)马赛克功能
- 开源IOS 客户端直播SDK自带美颜功能
- iOS GPUImage音视频采集以及美颜功能
- 强大的GPUImage,实现美颜及各种效果
- 简易代码实现简单美颜美白效果
- GPUImageSDK 美颜
- Android平台Camera实时滤镜实现方法探讨(八)--滤镜基本制作方法(二)简单美颜滤镜
- Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜
- iOS动画进阶 - 实现类似美颜相机的相机启动动画
- 女主播的“逆天”美颜原来是靠这些 AI 技术实现的
- Android平台Camera实时滤镜实现方法探讨(十一)--实时美颜滤镜
- 图像滤镜艺术---美颜相机之高级柔焦效果实现
- Android平台Camera实时滤镜实现方法探讨(八)--滤镜基本制作方法(二)简单美颜滤镜
- 第七届蓝桥杯省赛A组
- java远程调试配置
- Android7.0调用系统相机或相册时报错android.os.FileUriExposedException
- [jzoj]1345. 物流运输(图上DP)
- Cordova hybrid app -- android -- plugins
- OPENGL_SHARDER 实现美颜功能
- 深度学习物体检测(二)——SPPnet
- 搭建git for windows服务器
- 上传多图发布 微信小程序
- 最短路简单模板 ---- Til the Cows Come Home 【dijk()】
- LeetCode 9 Polindrome Number
- log4net 2.0.8不能将log txt作为日志的扩展名的原因
- VS2015 修改模板,增加类文件的头注释
- What's the difference between hashtable and maps?