7 Mr_Zzr

尚未进行身份认证

暂无相关描述

等级
博文 59
排名 10w+

OpenGL.Shader:7-学习光照-法线向量

OpenGL.Shader:7-学习光照-法线向量光照在OpenGL当中占据很重要的一部分。光照的仿真已经成为计算机领域的一个主要研究课题,我们可以看到这个领域的影响,这不仅仅反映在逐步提升的游戏视觉上,而且还反映在电影、电脑成像(CGI)等领域。通常根据类型,可以把不同的光源分为下面几组:环境光(Ambientlight)环境光看上去来自四面八方,场景中的一切被照亮的程度都...

2019-06-18 22:01:46

OpenGL.Shader:6-glDrawArraysInstanced / 内置变量gl_VertexID

OpenGL.Shader:6-glDrawArraysInstanced+内置变量gl_VertexID绘制自跟踪的《三块广告牌》首先可以看看效果。这种效果可以从现在超火的《一起来捉妖》就能观察到。现在我们就来学习其中shader的知识。首先这次模型和着色器程序的代码组织上和以前稍作一些改变,便于更好的理解学习。我们先来定义那堆绿草的模型代码GreeneryMgr.hpp...

2019-05-18 17:31:27

OpenGL.Shader:5-游戏引擎之Camera3D镜头操作

OpenGL.Shader:5-游戏引擎之Camera3D镜头操作这篇文章记录的是游戏引擎开发当中,最普遍的镜头操作。玩过《王者荣耀》《绝地求生》《阴阳师》等热门手游的同学,应该就知道这个镜头操作是多么的普遍。接下来围绕这个镜头操作show一波代码。相关工程地址:https://github.com/MrZhaozhirong/NativeCppApp#include"CE...

2019-04-30 22:07:30

OpenGL.Shader:4-GPU过场动画,浅析并行运算

OpenGL.Shader:4-GPU过场动画,浅析并行运算本篇内容由两个简单的例子,继续学习着色器编码规范。以及着色器的概念延伸——并行运算。对应项目地址:https://github.com/MrZhaozhirong/NativeCppApp第一个例子的效果图。一样还是基于之前文章内容的正方体的模型数据,相关代码就不放上来了,有需要的同学到github上领取。现在就着重的...

2019-04-09 22:19:19

OpenGL.Shader:3-GPU纹理动画,顶点/片元着色器再学习

OpenGL.Shader:3-GPU纹理动画,顶点/片元着色器再学习先放项目地址:https://github.com/MrZhaozhirong/NativeCppApp还有本篇内容的效果图这篇文章开始,正式开展OpengGL.Shader的知识。由浅析的效果到深入的理论一步步的去解剖GLSL。继上一篇OpenGL.Shader:2文章,我们已经可以完成了一个正方体的...

2019-04-04 14:49:39

OpenGL.Shader:2-Android Cpp下加载assets图片资源 / 各种格式加载纹理 / 在线找AndroidNative源码

OpenGL.Shader:2-AndroidCpp下读取assets图片资源/读取图片加载纹理/在线找AndroidNative源码(AS3.xrebuild出现MorethanonefilewasfoundwithOSindependentpath)这篇文章主要解决标题上的几个大问题。为啥是说大难题?据我发现,第一个问题(Cpp下读取assets图片...

2019-04-01 14:03:29

OpenGL.Shader:1-重新认识Android上OpenGL(Cpp)

OpenGL.Shader:1-重新认识Android上的OpenGL(Cpp)0、前言从这篇文章开始新的系列内容(NativeOpenGL),主要收录的是Android上C++开发的OpenGL.ES,OpenGL.Shader,ARCore(NDK),以及新的图像渲染接口Vulkan,往后会继续扩展Unity,Unreal等游戏引擎的学习。在开展新系列的内容之前,假设你已经具备了一...

2019-03-19 16:22:41

NDK学习笔记:RtmpPusher之利用rtmpdump推h264/aac码流

NDK学习笔记:RtmpPusher之利用rtmpdump推h264/aac码流本篇将是RtmpPusher的最后一篇。在之前的3篇文章里,我们已经把原生的视频YUV格式编码成h264,把音频的PCM格式编码成aac。现在我们借助rtmpdunmp库,把这些数据包以RTMP的协议打包并推到指定url的流服务器。这里需要配合生产者-消费者的设计模式来优雅地完成这个任务,整个落成框架如下...

2019-03-07 22:42:44

NDK学习笔记:RtmpPusher之利用faac库将pcm格式编码为aac

NDK学习笔记:RtmpPusher之利用faac将pcm格式编码为aac打算一篇总结完知识点。faac的源码编译过程就不介绍了,网上很多。而且faac版本貌似已经稳定不更新,所以直接拿人家编译好的库也没问题(我github工程里面就是已经是最后一个版本的了)。不废话,开始代码,java层代码如下:privateAcousticEchoCancelercancele...

2019-03-06 11:56:23

NDK学习笔记:RtmpPusher之深度学习编码协议h264

NDK学习笔记:RtmpPusher之深度学习编码协议h264认识编码协议h264x264是根据h264编译协议写出来的一个编码库,两者就是这样关系。so,什么是h264编码协议?首先我们从简单的说起:在H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。在H264中图像以序列为单位进行组织,...

2019-03-02 11:28:11

NDK学习笔记:RtmpPusher之认识x264编码库

NDK学习笔记:RtmpPusher之认识x264编码库在家过了个懒散年,为自己定了些小目标(譬如一个亿什么的,人要有梦想是吧)哈哈。祝大家诸事顺景,代码没bug,服务器不宕机。距离上一篇文章一个多月了,之前的文章主要是学习ffmpeg关于视音频解码同步的部分内容(native_decode),接下来的几篇文章,我们来学习关于x264/faac的视音频编码内容(native_encode),通...

2019-03-01 16:18:41

NDK学习笔记:FFmpeg音视频同步3(你追我赶,升级ffmpeg/libyuv支持neon)

NDK学习笔记:FFmpeg音视频同步3 本篇内容说多不多,但如果要说得明明白白的,可能就有点难度了。所以我决定把我的调试过程日志都呈现出来,方便大家理解。继上一篇文末,我们学习到了什么是DTS/PTS,还有音视同步的三种策略。那再FFmpeg框架中,又怎么体现这些变量?我们以音频的解码线程为例,如下代码所示。void*audio_avframe_decoder(void*arg...

2019-01-23 18:52:01

NDK学习笔记:FFmpeg音视频同步2.5(内存池的优化)(DTS/PTS && 视频IPB帧)

NDK学习笔记:FFmpeg音视频同步2.5(内存池的优化) 继续上一篇AV_PACKET_BUFFER内存池应用。FFmpeg音视频同步1~2的代码,demo运行的效果应该是怪怪的。怎么怪?前几秒视频丢失\混乱花屏\视频慢、音频快。这一章我们一一分析这些问题的根本原因,以及解决方法。所以出现这些问题的原因是什么?为啥在之前的教学例子没有出现?显然这跟我们新添加的AV_PA...

2019-01-20 10:16:06

NDK学习笔记:FFmpeg音视频同步2(内存池应用)

NDK学习笔记:FFmpeg音视频同步2(内存池应用) 本章继续上一篇的内容,实现nativePlay方法,创建简易的AVPacket缓冲区,实现高效的存储。废话不说,直接上代码。JNIEXPORTvoidJNICALLJava_org_zzrblog_ffmp_SyncPlayer_nativePlay(JNIEnv*env,jobjectinstance){...

2019-01-17 23:13:22

NDK学习笔记:FFmpeg音视频同步1(视频解码+音频解码)

NDK学习笔记:FFmpeg音视频同步1(视频解码+音频解码) 0、开篇先来点废话本篇文章开始,我和大家一起来讨论这个经久不衰的音视频开发的难点——音视频同步。囊括内容比较多,大到代码组织,小至C语法糖,尽力做到每一个像我一样的菜鸡都能掌握解决方法。正式开始之前,我又想起了之前利用OpenGLES+MediaCodec的水印录制系列文章,当时没有处理音频,合成出来的mp4只有图...

2019-01-14 22:37:06

FFMPEG错误速查。

FFMPEG错误速查。自用。持续更新。一些常见的FFERRTAG的值转换AVERROR_BSF_NOT_FOUND=-1179861752AVERROR_BUG=-558323010AVERROR_DECODER_NOT_FOUND=-1128613112AVERROR_DEMUXER_NOT_FOUND=-1296385272AVERROR_ENCODER_NOT...

2019-01-09 15:37:32

NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)

NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad 此文章是关于NDK线程的第二篇理论知识笔记。主要有两个点,如下:pthread_create(Toomanyarguements,expected1)? 线程中如何获取JNIEnv?GetEnv返回NULL? FindClass返回NULL?首先我们在主页MainActivity的代码如下:p...

2018-12-27 17:31:44

NDK学习笔记:POSIX-thread 用法总结(pthread_join、pthread_cancel、pthread_mutex_、pthread_cond_ )

NDK学习笔记:POSIX-thread 用法总结三个简单的例子,记录NDK中的POSIX-thread线程的常用用法。好记性不如烂笔头。 第一个例子,创建,退出,自杀,它杀。#include<stdlib.h>#include<stdio.h>#include<unistd.h>#include<pthread.h>...

2018-12-25 17:45:07

NDK学习笔记:JNI调用Java层方法创建Native的AudioTrack播放PCM(方法签名,CallXXXMethod)

NDK学习笔记:JNI调用Java层方法创建Native的AudioTrack播放PCM题目有点复杂,不过确实就是那么回事。这章想记录的内容比较多,先列出来:nativestatic与native的参数列表区别 JNI调用Java的方法(相关API、方法签名的获取) native使用java对象常用实用技巧。废话不说,直接撸码publicclassZzrF...

2018-12-19 16:04:27

NDK学习笔记:FFmpeg解压MP34提取音频PCM(swrContext、swr_alloc_set_opts)

NDK学习笔记:FFmpeg解压MP34提取音频PCM 承接 FFmpeg解压MP4提取视频YUV ,这次我们需要提取的是音频原始数据PCM。代码流程大同小异,主要区别就是AVFrame->PCM数据的转换。废话不说了,直接贴代码。publicclassZzrFFmpeg{publicstaticnativeintMp34TOPcm(Stringin...

2018-12-17 17:44:42
奖章
  • Github
    Github
    绑定github第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!