1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-22 20:25:28 +08:00

Merge pull request #174 from giraffesyo/patch-1

移除了多余的“的”
This commit is contained in:
Gary Wang
2021-02-18 19:07:59 +08:00
committed by GitHub

View File

@@ -10,7 +10,7 @@
深度缓冲就像<def>颜色缓冲</def>(Color Buffer)储存所有的片段颜色视觉输出一样在每个片段中储存了信息并且通常和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的它会以16、24或32位float的形式储存它的深度值。在大部分的系统中深度缓冲的精度都是24位的。 深度缓冲就像<def>颜色缓冲</def>(Color Buffer)储存所有的片段颜色视觉输出一样在每个片段中储存了信息并且通常和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的它会以16、24或32位float的形式储存它的深度值。在大部分的系统中深度缓冲的精度都是24位的。
当深度测试(Depth Testing)被启用的时候OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试如果这个测试通过了的话深度缓冲将会更新为新的深度值。如果深度测试失败了片段将会被丢弃。 当深度测试(Depth Testing)被启用的时候OpenGL会将一个片段的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试如果这个测试通过了的话深度缓冲将会更新为新的深度值。如果深度测试失败了片段将会被丢弃。
深度缓冲是在片段着色器运行之后(以及模板测试(Stencil Testing)运行之后,我们将在[下一节](02 Stencil testing.md)中讨论在屏幕空间中运行的。屏幕空间坐标与通过OpenGL的<fun>glViewport</fun>所定义的视口密切相关并且可以直接使用GLSL内建变量<var>gl_FragCoord</var>从片段着色器中直接访问。<var>gl_FragCoord</var>的x和y分量代表了片段的屏幕空间坐标其中(0, 0)位于左下角)。<var>gl_FragCoord</var>中也包含了一个z分量它包含了片段真正的深度值。z值就是需要与深度缓冲内容所对比的那个值。 深度缓冲是在片段着色器运行之后(以及模板测试(Stencil Testing)运行之后,我们将在[下一节](02 Stencil testing.md)中讨论在屏幕空间中运行的。屏幕空间坐标与通过OpenGL的<fun>glViewport</fun>所定义的视口密切相关并且可以直接使用GLSL内建变量<var>gl_FragCoord</var>从片段着色器中直接访问。<var>gl_FragCoord</var>的x和y分量代表了片段的屏幕空间坐标其中(0, 0)位于左下角)。<var>gl_FragCoord</var>中也包含了一个z分量它包含了片段真正的深度值。z值就是需要与深度缓冲内容所对比的那个值。
@@ -197,4 +197,4 @@ void main()
另外一个很好的技巧是牺牲一些性能,**使用更高精度的深度缓冲**。大部分深度缓冲的精度都是24位的但现在大部分的显卡都支持32位的深度缓冲这将会极大地提高精度。所以牺牲掉一些性能你就能获得更高精度的深度测试减少深度冲突。 另外一个很好的技巧是牺牲一些性能,**使用更高精度的深度缓冲**。大部分深度缓冲的精度都是24位的但现在大部分的显卡都支持32位的深度缓冲这将会极大地提高精度。所以牺牲掉一些性能你就能获得更高精度的深度测试减少深度冲突。
我们上面讨论的三个技术是最普遍也是很容易实现的抗深度冲突技术了。还有一些更复杂的技术,但它们依然不能完全消除深度冲突。深度冲突是一个常见的问题,但如果你组合使用了上面列举出来的技术,你可能不会再需要处理深度冲突了。 我们上面讨论的三个技术是最普遍也是很容易实现的抗深度冲突技术了。还有一些更复杂的技术,但它们依然不能完全消除深度冲突。深度冲突是一个常见的问题,但如果你组合使用了上面列举出来的技术,你可能不会再需要处理深度冲突了。