GPU topic:Tile-Based Rendering vs. Immediate Mode Rendering

经典的GPU架构都是Immediate mode GPU.主要的流程就是vertex shader 和 pixel shader顺序执行。其数据流如下图所示: 执行流程可以用伪代码表示如下。 foreach(triangle) foreach(fragment) load FBO data (color, depth, ...) call fragment shader store new FBO data Immediate mode是Full Screen的,所以对于每个primitive都直接提交渲染。这样Pipeli……

阅读全文

imgui的使用

首先可以看看imgui的目录结构: backends中的文件: 这里举例在一个简单的工程中使用imgui。 首先下图中框中的文件就是从上述的两个图中复制过来的。原本的工程中只有一个Transformation.cpp。 包含头文件 #include "imgui/imgui.h" #include "imgui/imgui_impl_win32.h" #include "imgui/imgui_impl_dx11.h" 在进入消息循环之前 // Setup Dear ImGui context IMGUI_CHECKVERSION(); ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); io.ConfigFlags |= ImGuiConfigFlags_NavEnableSetMousePos;……

阅读全文

GPU topic:延迟 vs. 带宽 vs. 吞吐量

再谈延迟,带宽和吞吐量之前,先看看在之前分享的文章中我们说过这样的一个例子: GPU内存架构和命令的处理 上面的例子以同时期的i7-2600k和GeForce GTX480来进行对比。i7-2600k的存储带宽在表现好的时候可以达到19GB/s, GTX480的存储带宽则是将近180GB……

阅读全文

Draw.io部署教程

Draw.io是GitHub上的一个开源的免费流程图绘制工具,功能非常的丰富,使用上和ProcessOn基本上是一致的,但是ProcessOn是收费的。 Draw.io也有在线网页版,可以直接访问(https://www.draw.io/)进行使用。也有桌面版,桌面版下载地址:ht……

阅读全文

Shader在GPU中是如何执行的?

首先,我想说明一下,虽然文章的标题是 How GPU Works,但是我无意再去重复GPU工作的各个stage,流水线这些概念。本文会深入到更底层一点:GPU是如何执行shader的。在本文中,我除了GPU执行shader的方式之外,还有稍微涉及一些多核心,SIMD,超线程这些过去大家看上去貌……

阅读全文

NES模拟器

前段时间把以前上传到优酷上的视频搬到了B站上,里面包含一个用STM32F407单片机上移植Nes模拟器玩超级玛丽的视频。视频大概是下面这个样子的。当时一只手玩,另一只手拿着HTC安卓手机拍的,那时候还是安卓手机刚刚兴起,好像小米也才刚发布第一款手机。所以拍摄的效果并不好,仅仅用作……

阅读全文

2020,我在武汉的这一年的故事

缘起 距离上一次写年度总结已经有4年了,毕业工作后整个人似乎就总是处于慌慌张张的生活状态当中,忙着工作,忙着买房,忙着结婚…回看几年前记录下的文字不免想到,要是这几年能抽时间记录下自己的生活状态,对自己的认识是否会更深几分? 作为小市民阶级,2020年的确极具魔幻现实风……

阅读全文

谈谈OpenCV中的四边形

首先抛出一个问题,给定一系列二维平面上的的点,这些点是可以组成一个封闭的二维图形。因为这些点是矩形区域拍摄图像后识别得到的图形的边界点,所以我们要抽象出来这个矩形,也就是我们要反映出这个矩形。问题是在拍照的时候摄像头可能不是正对着图形的,那么矩形就必然在图像上反映为一个四边形, 如……

阅读全文

PyQt5+OpenCV多线程显示摄像头数据

pyqt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。Qt库是最强大的GUI库之一。pyqt5很大的优势就是跨平台,而且使用起来非常的方便,编写的代码比较精简,又能实现比较复杂的界面。在很多视觉程序中都需要GUI, 搭配OpenCV, pyqt5可方……

阅读全文

VS Code远程开发配置

前言 北京时间2019年5月3日,在 PyCon 2019 大会上,微软发布了 VS Code Remote,开启了远程开发的新时代!这次发布包含了三款核心的全新插件,它们可以帮助开发者在容器,物理或虚拟机,以及 Windows Subsystem for Linux (WSL) 中实现无缝的远程开发。通过安装 Remote Development Extension Pack ,你可以快速上手远程开发。 Visual Studio Code Remote 允许开发者将容器,远程……

阅读全文