#graphics-renderer


Android NDK 开发 —— 从 Assets 文件夹加载图片并上传纹理

在 OpenGL 开发中,我们要渲染一张图片,通常先是得到一张图片对应的 Bitmap ,然后将该 Bitmap 作为纹理上传到 OpenGL 中。在 Android 中有封装好的 GLUtils 类的 texImage2D 方法供我们调用。

    public static void texImage2D(int target, int level, int internalformat,
            Bitmap bitmap, int type, int border)

该方法的底层原理实际上也是解析了该 Bitmap ,得到了 Bitmap 所有的像素数据,类似于 Android NDK 关于 Bitmap 操作的 AndroidBitmap_lockPixels 方法,如果你不太了解该方法,可以参考这篇文章:Android JNI 之 Bitmap 操作

得到了所有像素数据之后,实际最终还是调用了 OpenGL 的 glTexImage2D 来实现纹理上传。当然,如果可以直接得到所有数据,也不需要走解析 Bitmap 这一步了,这种场景最常见的就是把相机作为输入了。

[阅读全文]
JNI 

进击的 Vulkan 移动开发之 SwapChain

  • Vulkan 开发的系列文章:
  1. 进击的 Vulkan 移动开发(一)之今生前世

  2. 进击的 Vulkan 移动开发(二)之谈谈对渲染流程的理解

  3. 进击的 Vulkan 移动开发之 Instance & Device & Queue

  4. 进击的 Vulkan 移动开发之 Command-Buffer

在之前的文章中,讲到了 Command-Buffer 提交给 Queue 去执行,也提到了 Vulkan 实现跨平台机制,是有一些拓展的,这里就讲讲 Vulkan 窗口系统的拓展(Vulkan Window System Integration WSI),如下图所示:

[阅读全文]
Vulkan 

进击的 Vulkan 移动开发之 Instance & Device & Queue

  • Vulkan 开发的系列文章:
  1. 进击的 Vulkan 移动开发(一)之今生前世

  2. 进击的 Vulkan 移动开发(二)之谈谈对渲染流程的理解

在 Vulkan 的系列文章中出现过如下的图片:

这张图片很详细的概括了 Vulkan 中的重要组件以及它们的工作流程,接下来的文章中会针对每个组件进行学习讲解并配上相关的示例代码,首先是 Instance、Device 和 Queue 组件。

[阅读全文]
Vulkan 

OpenGL 之 帧缓冲 使用实践

避免图片丢失,建议阅读微信原文:

https://mp.weixin.qq.com/s/l5eYzkYAzR-m21-iYBoyCw

帧缓冲(Framebuffer Object),简称 FBO,在渲染绘制中, 图像最终都是绘制到 FBO 上的,一般都是默认的 FBO 上,也就是我们的屏幕。

除此之外,还可以创建自己的 FBO,用来作为绘制的载体,当在自己的 FBO 上绘制好了之后,可以再把绘制内容显示到屏幕上,实现一个双缓冲的绘制。

FBO 实际上是由颜色附件、深度附件、模板附件组成的,作为着色器各方面(一般包括颜色、深度、深度值)绘制结果存储的逻辑对象。

[阅读全文]
OpenGL  FBO