- 博客(27)
- 资源 (4)
- 收藏
- 关注
原创 Win10 + cygwin64 + ndk 配置ijkplayer android
最近,在开发时,正好遇到了如何在Windows上安装ijkplayer的问题。ijkplayer是完全基于FFmpeg的 参考这两篇编译安装ffmpeg的文章,也许对我们有一些帮助:https://sourceforge.net/p/servestream/code/HEAD/tree/ffmpeg/scripts/arm-build.shhttp://blog
2016-06-19 12:17:30
3047
原创 学习ShaderToy第一天: glsl语言内置函数gl_FragCoord
运行环境:Androidopengl es版本: 2.03D引擎库 : Rajawali3DShaderToy上用的shader语言 为glsl , 效果是用webgl跑的,而webgl封装了opengl es, 所以ShaderToy上的例子同样使用于Android端。ShaderToy基本上 都是用fragment shader 对栅格化后的像素进行处
2016-02-26 17:06:01
18293
原创 C++递归算法:我的理解
递归算法,总结起来具有以下几个特点: 1 它有一个基本部分,即直接满足条件,输出 2 它有一个递归部分,即 通过改变基数(即n),来逐步使得n满足基本部分的条件,从而输出 3 在实现的过程中,它采用了分治法的思想: 即将整体分割成部分,并总是从最小的部分(基本部分)开始入手(输出),其背后的原理在于 当整体递归到部分时,会保留整体的信息,
2016-01-26 00:00:37
15307
原创 3D引擎:Horde3D:Cocos 和 Horde3D渲染部分的设计比较
其实 渲染引擎,所有的 步骤无非就是: 在 init里 : 创建shader 定义好 要渲染对象的 顶点属性 bind vertex buffer glClearColor 在Loop循环里: set uniforms bind framebuffer glEnable 各种 管线通道 glDraw 对
2015-12-01 11:41:33
2166
原创 3D引擎:Horde3D:Shader类里的 结构体,以及渲染一个 Logo的简单流程(三)
首先是 ShaderCombination结构体参数有:1 uint32 combMask 这个变量主要用来 表示#define的位,每一位表示一个 #define如在 shader文件中 有这样的语句: ... #ifdef _F03_ParallaxMapping #define _F02_NormalMapping#
2015-11-28 17:14:14
1685
原创 3D引擎:Horde3D:读取Shader文件流程(二)
首先,根据[[ ]]来判断 FX, VS_*, FS_*部分然后,将FX部分给 fxCode字符串, VS_*, FS_*分别交给 CodeResource 并依次存放在 _codeSections vector中。之后, 会解析 FX部分, 这部分先会设置 uniform默认的值,float / float4 类型,变量存储在 _uniforms里 存放, S
2015-11-26 19:53:16
869
原创 3D引擎:Horde3D:如何解析Shader文件(一)
在上一帖中,http://blog.youkuaiyun.com/jinghouxiang/article/details/49994983说了 如何从 Android的jni层获取 Assets文件夹下 文件的路径名,获取路径名后 需要将文件中的数据读取到char 数组中假如 assets下 有一文件为 Shader/test.shaderrootDir 为我们读取文件的根目
2015-11-24 17:01:17
1368
原创 Android Ndk: 如何从native层直接获取 assets文件夹下的文件
这篇博文写的特别好 http://androgeek.info/?p=275从Native层 直接读取 Android 工程目录 下 Asserts目录下的文件具体思路如下:Android工程 会被打包成一个 apk文件,具体存储在 data/app下 apk文件是一种 类似于 zip的压缩文件,因此,我们需要 用unzip的开源库,调用该库的 api来
2015-11-23 14:47:27
7830
原创 3D引擎:Horde3D的 Resource类
Horde3D中 Resource类 和 Scene类时 两大主要的类。 在形式上,这两个类有许多共同点。这里主要讲 Resource类。Resource主要负责加载我们需要的资源,如 执行的渲染流程, 模型,Texture,Shader code等。Resource类里有一个管理类,专门负责管理需要用到的资源。主要包括 一个 Resource类: 它是所有Res
2015-11-20 23:14:59
994
原创 3D引擎:Horde3D:小感3
Horde3D中所有 跟渲染相关的东西 最终都会交给 RenderBase去干。只要是与 Opengl相关的API在 RenderBase都能找到,绝对是学习opengl的 上好材料RenderDevice 定义在 egRendererBase.h里构造方法: RenderDevice() init方法Resources 资源类的:
2015-11-17 16:43:53
2439
原创 3D引擎:Horde3D:小感2
我们自己在写Opengl 渲染程序时, 会定义好每个可渲染的物体对象,它的属性可以包含了 顶点,颜色,材质, shader program。 然后,对它定义接口包括更新顶点位置,得到变换矩阵,使用shader program, 输送unifrorm变量,通过VBO,IBO draw。这样子我们 会创建一堆的 可渲染对象, 然后对每个对象进行渲染, 随着对象的增多,代码量就会变得越多
2015-11-16 23:14:47
1144
原创 3D引擎:Horde3D:小感
我们在 使用 Horde3D 写一个 Demo时, 真正的只需要与Horde3D的 以下几个类打交道就行了: 1 SceneManager类,2 ResourceManager类 通过 它们提供的接口 来添加资源类 和 节点 每添加一次, 都会创建一个 这个类的引用 3 Resource类 不同的Resource都继
2015-11-14 19:27:29
2847
原创 读取Xml: RapidXml
不管我们是开发 App 还是开发游戏。 视图都是一个非常重要的概念。 在App中的视图,可能是一些控件。 在游戏里,视图就是 场景,精灵等场景中的Node。不管如何,如果有大量的控件或者场景Node需要我们去创建或者 布局,就太费劲了。因此,有时候,我们可以用xml来配置,而程序中只需 读取这些xml文件,就方便多了。下面介绍一种常用的 RapidXml
2015-11-12 11:18:50
1661
原创 Opencv For Android: 如何显示摄像头预览
它是在 CameraBridgeBase 这个类里有一个 方法, deliverAndDrawFrame(CvCameraViewFrame ), 在这个函数里面,它将CvCameraViewListener2 的onCameraFrame 返回的Mat 转换为 bitmap ,然后通过canvas画在 surfaceView 持有holder的 surface上。注
2015-11-09 22:07:27
3951
原创 Modern OpenGL ES: ndk编程——画一个三角形之Shader工程
OpenGL ES2.0以后,想画一个东西必须使用 shader来完成。 而使用shader需要创建shader工程。使用shader来画一个东西的大体步骤如下:1 创建和编译shader 2 创建和链接shader工程3 为shader工程设置 uniform 和 attrubte变量4 Shader编译 并链接到工程,成最终的可执行文件Vertex Sha
2015-11-02 21:14:15
1196
原创 Modern OpenGL ES: ndk编程——画一个三角形之创建EGL窗口
上一节我们 知道了如何用ndk 来创建一个 Activity这一节,我们来创建 GL 的窗口上一节已经知道, Khronos Group 为我们提供了 EGL API 来帮助我们创建 窗口,同步窗口绘制,管理窗口渲染。1 与窗口系统通信EGL在OpenGL ES 和 本地窗口系统之间 提供了一个 "glue"层。 在EGL 决定那种类型的绘制surface可以用之前
2015-10-31 16:25:18
2976
原创 Modern OpenGL ES: ndk编程——画一个三角形之NativeWindow
OpenGLES 3.0 需要链接到 下面库: 1 OpenGLES3.0 库 libGLESv2.lib 和 EGL 库 libEGL.lib 我们会在 android-ndk-r10c下的 platforms/android-21/arch-arm/usr/lib下找到这两个 libEGL.so 和 libGLEv3.so 2 OpenGLES3.0 应
2015-10-30 14:56:04
3077
原创 3D引擎:Horde3D:App类
Horde3D引擎 主要位于 Horde3D/Source/Horde3DEngine/Debug/下的 Horde3D.lib。 其源码位于Horde3D/Bindings/C++/Horde3D.h和 Horde3D/Source/Horde3DEngine/下的cpp文件里Horde3D引擎资源的加载API 主要是 位于Horde/Source/Horde3DEngine/D
2015-10-29 23:05:58
1873
原创 3D引擎:Horde3D:窗口类API:glfw
Horde3D是基于 opengl的 次世代,轻量级渲染引擎。glfw 这个开源库是一个很好便捷 opengl创建窗口的库, 它创建一个 opengl 上下文的窗口,并可以接收窗口输入事件关于 glfw 创建窗口的demo,可以参考:http://www.glfw.org/documentation.html首先,分析Horde3D 用glfw创建窗口的方式
2015-10-29 23:04:30
2010
原创 EGL:简介
参考官方文档: https://www.khronos.org/eglEGL定义:EGL 是图形渲染API(如opengl es) 和 本地平台(如android)窗口系统之间的接口,即桥梁。它为继承有OpenGL ES的客户端提供了创建渲染Surface的机制,并且为OpenGL ES创建了图形上下文, 并且提供了本地平台渲染(如窗口渲染)与 OpenGL ES渲染的同步功能。
2015-10-28 11:52:15
1812
原创 虚拟现实:UI: CrossApp的尝试
一 首先讲一下, Android端 GLSurfaceView的渲染机制 CrossApp是基于Cocos2d-x引擎的, 而Cocos2d-x是完全基于 OpenGL的 。 一般基于OpenGL的引擎 整个渲染机制 为: 1 用EGL 库创建 窗口,关联OpenGL 上下文到该窗口 2 设置窗口大小 以及 glV
2015-10-16 11:06:54
2052
原创 Urho3D引擎:初识
Urho3D引擎,关注很久了,之前一直在学习OpenGL。有了OpenGL一定基础后,也是时间好好看看引擎:让OpenGL和编程有一个很好的补充。在Urho3D的众多Demo都是通过Sample这个类来进行拓展工作的,Sample其实就是一个框架,它继承自 Application。 那么,每个Demo都是通过Sample/Application来初始化Urho3D引擎,并启动运行整个主
2015-09-17 22:11:59
6582
原创 Learn OpenGLES: 正交变换
上一节中,我们遗留了一个Android适配的问题。 这个问题表现为我们创建的物体长宽比例如果与屏幕宽高比不一致的画,会被屏幕拉伸。 为什么会拉伸? 首先我们来认识齐次坐标 , 这个就是一个齐次坐标, 其中x, y, z 分别表示世界坐标系中x, y, z轴的坐标。 关于空间中一点的坐标,你可以想象下有一个原点,基于这个原点建立一个坐标系,而物体相对于该原点的位置就是这个坐标系
2015-08-02 21:21:08
1541
原创 Learn OpenGLES:颜色渐变
这一贴,是继上一贴的补充。主要介绍,Shader的顶点属性数组(即顶点有多个属性)的情况,以及Shader是如何对顶点渲染颜色的。我们将以简单的 长方形为例, 并在最后讨论当手机横竖屏时,长方形显示适配的问题。在上一节中,我们讲了如何对三角形进行上色。 它的关键点很简单,就是通过在fragment shader里定义一个uniform变量(unifrom是图像管线中的全局变量,在图形渲
2015-07-26 13:35:16
4198
原创 Learn OpenGLES:画三角形
上一贴我们简单的搭建了一个OpenGL的运行窗口,也简单的对这个窗口进行绘制。 这一贴,我们将介绍OpenGL如何将CPU中的内存数据送到GPU的内存中,Shader又是如何找到这些数据,并进行绘制的。我们将通过绘制三角形这一简单的例子,为大家简单的介绍下OpenGL的管线流程,以及如何渲染颜色,颜色渐变动画等知识。#介绍OpenGL的管线Opengl 中所有的事物,都是由点来
2015-07-26 13:28:18
2198
原创 Learn OpenGLES: HelloWorld
刚参加工作半年,一直没有写博客,一来平时学习做笔记,犯不着写博客;二来,一直未想好未来在哪一方面积淀技术;三来,读书少,也不好意思写博客。写博客,对于程序员来说是有好处的,它在清晰化思维的同时能够弥补思维的漏洞。 同时,每一个笔客都是在构建自己的虚拟的世界,在梦想的世界里遨游,因此,有着同样情丝的程序员,写博客是编程之外的延续,反之亦然。纠结了大半年,终于确定自己要走的路,然我感叹
2015-07-22 22:53:25
1364
原创 ubuntu14.04+opencv2.4.x 的PTAM配置
PTAM 是visualSLAM的一种算法,不同于SLAM的实现,它将摄像机跟踪和地图构建分离,仅使用初始地图构建及借用bundle的实现来实现每增添一个新的场景,便实时计算摄像机的位置。这一算法,为AR领域带来的革新,使AR真正进入虚拟与真实交互的新篇章。 接下来,我将结合自己的实践,为大家介绍如何在Linux下安装PTAM。Opencv版的PTAM源码可见:https
2015-07-22 09:30:06
2734
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人