博客专栏  >  移动开发   >  OpenGL 从入门到起飞

OpenGL 从入门到起飞

主要介绍OpenGL的基础知识,以及一些常规效果的实现。

关注
5 已关注
20篇博文
  • OpenGL(二十) 投影 的shader实现

    简单说来 投影 是将一个纹理贴到另一个模型或图片上的技术。在现实生活中,皮影戏就是根据这个原理产生的。原理参照皮影戏,我们需要一个投射器,一个采样图和一个成像模型。这样一想,跟OpenGL(十九)阴影...

    2018-02-10 11:00
    198
  • OpenGL(十九) 阴影 通过ShadowMap的shader实现

    阴影 可以使角色与地面的关系更加明确。本文主要介绍如何通过 ShadowMap 在OpenGL中实现 阴影 。核心原理Shadow Map的基本思想:通过LightView画一张DepthMap,然后...

    2018-02-10 10:57
    163
  • OpenGL(十八)Gamma校正 色域 与 HDR

    通常来说,在不同设备上看到的颜色是不同的。其中最常提及的概念是高动态光照渲染(High-Dynamic Range,简称 HDR )。它可以使图像在亮度的表现上更丰富。这篇文章讨论设备颜色和校正的相关...

    2018-02-10 10:52
    265
  • OpenGL(十七)Photoshop blend算法 与 图层混合模式

    使用混合模式可以制作丰富多彩的效果。而OpenGL中可以轻松开启这种模式,但更关键的是图形算法。本文参照 Photoshop blend算法 ,介绍如何通过shader,在OpenGL中实现混合效果。...

    2018-02-10 10:47
    190
  • OpenGL(十六)通过 卷积 实现: 边缘混合 、 Blur 和 高斯模糊

    卷积卷积 (Convolution)是两个变量在某范围内相乘后求和的结果。卷积计算通常用来处理边缘的颜色或整体的混色。作为采样之后的处理,可以供很多功能使用。因此在图像效果处理时,它还是应用比较广泛的...

    2018-02-05 19:59
    432
  • OpenGL(十五)雾效 的 shader 实现

    雾效 可以表现出一个线性的颜色变化,常用于烘托场景气氛。这种效果的实现原理并不复杂,本文着重讨论如何通过shader编写完成雾效的实现。核心原理雾效 的核心在于:计算视点与物体之间的距离,然后根据一个...

    2018-01-29 18:05
    251
  • OpenGL(十四)环境反射 环境折射 的shader实现

    在上一节我们讲解了如何制作天空盒,本篇文章介绍它的一个衍生功能——在物体上叠加 环境反射 。核心原理核心很简单,在天空盒中,视线照射到天空盒上的区域即需要绘制的部分。在环境反射中,需要绘制的区域变成了...

    2018-01-22 13:41
    200
  • OpenGL(十三) 天空盒 的 shader 实现

    天空盒 的使用可以使用户感觉所处一个封闭的世界环境,使得游戏更加真实。本文主要介绍如何通过OpenGL和GLSL来实现天空盒。天空盒 的核心原理其实并不复杂,它相当于在视线外套上一个盒子。盒子有6个面...

    2017-06-19 15:05
    1433
  • OpenGL(十二) 光源类型 平行光 、 点光源 、 聚光灯 的实现

    常规的 光源类型 有三种。最简单的自然是平行光。稍复杂些的为点光源,最复杂的为聚光灯。总体说来,在可编程管线中原理是一样的。在OpenGL代码中传入必要的参数,在shader中进行相关的计算绘制出效果...

    2017-05-17 10:49
    1724
  • OpenGL(十一) 可编程管线 基础光照 的实现

    在OpenGL中创建 基础光照 ,主要的工作将模型中的法线信息和法线空间运算矩阵传入到shader中。另一方面,LightDir,ViewDir通常是在shader中从引擎参数获取的,为了简化光照模型...

    2017-05-02 15:01
    2450
  • OpenGL(十) 手机不可用特性 ComputeShader GeometryShader ...

    由于当前市场上还存在大量低端Android机器,它们只支持到OpenGL ES2.0,因此 手机不可用特性 有很多。对于一些3.0 甚至4.0的特性,只能看看热闹了。当然基本了解还是需要的,万一哪天都...

    2017-04-25 14:05
    1894
  • OpenGL(九)使用 FrameBufferObject

    在OpenGL中所有的图形,都会绘制到 FrameBufferObject 上。如果想使用界面的做分屏渲染,或需要屏幕图像制成贴图以备后期处理,就需要用到 FrameBufferObject 技术,这...

    2017-04-19 15:27
    2835
  • OpenGL(八)使用 subroutine 切换可编程管线

    Subroutine 功能是在OpenGL 4.0 版本里才增加的,因此对于各种Android手机,这个功能基本跪了。如果你发现你的程序报错:ARB_shader_subroutine,那就说明当前显...

    2017-04-14 13:57
    2045
  • OpenGL(七) GeometryInstancing 几何体实例化

    几何体实例化( GeometryInstancing ),是一种用于大批量重复物件渲染的GPU技术,以降低客户端和显卡端数据传输量,所谓的“一次提交,多次渲染”。简单说来就是合并DrawCall。通过...

    2017-04-10 15:34
    1151
  • OpenGL(六)使用 VAO 打包指令 优化代码结构

    通常说来当创建好vbo的数据结构,还需要设置 glVertexAttribPointer 等一系列属性,在OpenGL中提供了 VAO (Vertex Array Object)它相当于同时记录了数据...

    2017-03-29 12:16
    1132
  • OpenGL(五) 指令错误 检测的封装方法

    OpenGL的指令,返回值均为void,因此没法通过返回值来判断 指令错误 。为了能够第一时间发现问题,需要加入一个封装来监测是否有指令调用失败。当OpenGL调用出现错误时,会将错误的ID储存到一个...

    2017-03-27 13:43
    1436
  • OpenGL(四)Shader错误 检测

    由于shader不需要预编译,因此在OpenGL动态加载时会碰到 shader错误 。因此需要区分错误属于C++代码还是shader代码。本文主要探讨如何封装检测 shader错误 的接口。在Open...

    2017-03-20 12:53
    2937
  • OpenGL(三) 加载贴图

    有了模型还需要贴图。 加载贴图 的流程大体分为两部分,首先是图片的解码,其次是使用UV坐标与模型对应。本文主要从底层原理和第三方库两个方面来介绍 加载贴图 。下面分别介绍硬编码实现和SOIL库两种方式...

    2017-03-15 12:12
    1625
  • OpenGL(二)加载模型

    在OpenGL(一) OpenGL管线 与 可编程管线流程中,提到加载VBO、IBO的相关技术,本篇详细说一下。实际应用时,我们是不可能手写顶点和索引点。通常模型是使用3dMax或Maya制作,然后在...

    2017-03-13 12:59
    2315
  • OpenGL(一) OpenGL管线 与 可编程管线流程

    由于OpenGL是一个纯渲染核心,要写OpenGL程序,得先搭建一个外壳程序。不同平台下外壳程序的实现各有不同,这个系列的文章都在win32的平台上进行。具体实现,网上能找到很多,所以这不是本文的重点...

    2017-03-10 12:21
    2824
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部