Skip to content

Commit 0903c9d

Browse files
colin3dmaxgreggman
authored andcommitted
fixed translate bug
1 parent eaaaa99 commit 0903c9d

File tree

2 files changed

+462
-6
lines changed

2 files changed

+462
-6
lines changed

webgl/lessons/zh_cn/webgl-gpgpu.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,22 +1997,22 @@ function updateLineEndPoints(deltaTime) {
19971997
* 最后再读取结果
19981998
19991999
我们的动态最近线段示例就是这样做的:结果从未离开 GPU。
2000-
2000+
20012001
再举一个例子:我曾经写过一个计算直方图的着色器,最初我是将结果读取回 JavaScript,计算出最小值和最大值,然后再使用这些最小值和最大值作为 uniform 参数,把图像绘制回 canvas,实现图像自动拉伸(auto-level)。
2002-
2002+
20032003
但后来我发现,与其将直方图读取回 JavaScript,
20042004
不如直接在 GPU 上运行一个着色器,让它对直方图纹理进行处理,
20052005
输出一个 2 像素的纹理,分别存储最小值和最大值。
2006-
2006+
20072007
然后我可以将这张 2 像素的纹理传入第三个着色器,
20082008
让它在 GPU 内部读取最小值和最大值来做图像处理,
20092009
无需再从 GPU 中读取数据来设置 uniform。
2010-
2010+
20112011
类似地,为了显示直方图本身,
20122012
起初我也是从 GPU 读取直方图数据,
20132013
但后来我改为编写一个着色器,直接在 GPU 上可视化直方图,
20142014
完全不需要将数据读取回 JavaScript。
2015-
2015+
20162016
通过这种方式,整个处理流程都保持在 GPU 上进行,
20172017
性能更高,效率更好。
20182018
@@ -2082,7 +2082,7 @@ function updateLineEndPoints(deltaTime) {
20822082
20832083
着色器的工作机制类似于`map`函数——每个被调用的处理函数并不能决定其返回值的存储位置,这个决策完全由外部控制。在WebGL中,这个控制权取决于您配置的绘制方式。当调用`gl.drawXXX`时,系统会为每个需要计算的值调用着色器,询问"这个位置应该生成什么值?"
20842084
2085-
整个过程就是如此简单直接 .]()
2085+
整个过程就是如此简单直接
20862086
20872087
---
20882088

0 commit comments

Comments
 (0)