OpenGL
文章平均质量分 95
BetterDaZhang
做软件开发,个人感觉要勤于思考和坚持不懈。
展开
-
OpenGL中PBR着色器的实现
背景刚来公司的第一个项目就是通过OpenGL加载汽车的3D模型,UI设计提供了基础色(Base_Color)、粗糙度(roughness)、金属度(metallic),就是按照PBR提供的材质。之前的加载鞋子模型采用的方案是Blinn-Phone光照模型,Blinn-Phone光照模型也可以实现汽车3D模型的效果,实现过程中需要调整漫反射、高光的参数达到一个比较满意效果,与真实的效果相比较很难令人信服。所以汽车3D模型采用PBR技术实现,下面就介绍下Android端PBR Shader的实现,由于PBR理原创 2021-09-22 21:54:58 · 2494 阅读 · 0 评论 -
OpenGL渲染管线解析
背景:本篇文章主要偏向理论知识的讲解,实践方面后期会进行讲解。opengl的渲染管线中,如果接触3D渲染不多情况下,比如经常做视频滤镜或视频渲染显示的话,经常接触的两个部分就是顶点着色器、片段着色器。如果是做视频渲染的话,这两部分的内容也特别简单,总共也就十几行代码。我们可以从很多地方去摘抄相机流+OpenGL实现渲染的代码,通过把不同地方的滤镜摘抄过来替换掉,就可以实现各种各样的视频滤镜特效了。但当有人问题OpenGL顶点着色器是用来干啥的?OpenGL渲染管线有哪几个步骤?OpenGL每个步骤都分别有原创 2021-09-22 21:06:44 · 2111 阅读 · 0 评论 -
OpenGL踩坑记录
OpenGL踩坑记录3D模型加载3D模型加载在处理3D模型的时候,我们经常的操作是首先创建一个fbo,fbo关联texture,rbo。我们第一次渲染的时候是直接渲染到fbo关联的纹理上,然后经过其他纹理滤镜的处理后,再把它显示出来。这里有几个需要注意的点。3D 纹理离屏渲染渲染一定要关联一个rbo。离屏渲染前打开深度测试,离屏渲染之后一定要关掉深度测试。再进行其他的渲染操作,否则会出现渲染黑屏纹理。...原创 2020-08-12 13:28:57 · 526 阅读 · 0 评论 -
shader内置变量和函数
1、uint CreateShader(enum type) : 创建空的shader object;type: VERTEX_SHADER,2、void ShaderSource(uint shader, sizeicount, const **string, const int *length):加载shader源码进shader object;可能多个字符串3、void CompileShad转载 2017-10-09 14:23:56 · 374 阅读 · 0 评论 -
GLES20.glTexImage2D、GLUtils.texImage2D 使用区别
OpenGL 提供了三个函数来指定纹理: glTexImage1D(), glTexImage2D(), glTexImage3D(). 这三个版本用于相应维数的纹理,我们用到的是 2D 版本: glTexImage2D().函数原型:void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width, glsizei原创 2017-10-10 14:34:03 · 9662 阅读 · 5 评论