From 472b28fab4a10f8884ae84d364e01721b805914a Mon Sep 17 00:00:00 2001 From: aillieo Date: Sun, 7 May 2017 21:42:22 +0800 Subject: [PATCH 1/2] fix some translation mistakes --- docs/06 In Practice/01 Debugging.md | 42 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/06 In Practice/01 Debugging.md b/docs/06 In Practice/01 Debugging.md index a20f754..59e0cae 100644 --- a/docs/06 In Practice/01 Debugging.md +++ b/docs/06 In Practice/01 Debugging.md @@ -1,10 +1,10 @@ # 调试 -原文 | [Debugging](http://learnopengl.com/#!In-Practice/Debugging) ------ | ---- -作者 | JoeydeVries -翻译 | [Meow J](https://github.com/Meow-J) -校对 | 暂无 +| 原文 | [Debugging](http://learnopengl.com/#!In-Practice/Debugging) | +| ---- | ---------------------------------------- | +| 作者 | JoeydeVries | +| 翻译 | [Meow J](https://github.com/Meow-J) | +| 校对 | 暂无 | 图形编程可以带来很多的乐趣,然而如果什么东西渲染错误,或者甚至根本就没有渲染,它同样可以给你带来大量的沮丧感!由于我们大部分时间都在与像素打交道,当出现错误的时候寻找错误的源头可能会非常困难。调试(Debug)这样的**视觉**错误与往常熟悉的CPU调试不同。我们没有一个可以用来输出文本的控制台,在GLSL代码中也不能设置断点,更没有方法检测GPU的运行状态。 @@ -12,7 +12,7 @@ ## glGetError() -当你不正确使用OpenGL的时候(比如说在绑定之前配置一个缓冲),它会检测到,并在幕后生成一个或多个用户错误标记。我们可以使用一个叫做glGetError的函数查询这些错误标记。,他会检测错误标记集,并且在OpenGL确实出错的时候返回一个错误值。 +当你不正确使用OpenGL的时候(比如说在绑定之前配置一个缓冲),它会检测到,并在幕后生成一个或多个用户错误标记。我们可以使用一个叫做glGetError的函数查询这些错误标记,他会检测错误标记集,并且在OpenGL确实出错的时候返回一个错误值。 ```c++ GLenum glGetError(); @@ -20,16 +20,16 @@ GLenum glGetError(); 当glGetError被调用时,它要么会返回错误标记之一,要么返回无错误。glGetError会返回的错误值如下: -| 标记 | 代码 | 描述 | -| :------: | :------: | :------: | -| GL_NO_ERROR | 0 | 自上次调用glGetError以来没有错误 | -| GL_INVALID_ENUM | 1280 | 枚举参数不合法 | -| GL_INVALID_VALUE | 1281 | 值参数不合法 | -| GL_INVALID_OPERATION | 1282 | 一个指令的状态对指令的参数不合法 | -| GL_STACK_OVERFLOW | 1283 | 压栈操作造成栈上溢(Overflow) | -| GL_STACK_UNDERFLOW | 1284 | 弹栈操作时栈在最低点(译注:即栈下溢(Underflow)) | -| GL_OUT_OF_MEMORY | 1285 | 内存调用操作无法调用(足够的)内存 | -| GL_INVALID_FRAMEBUFFER_OPERATION | 1286 | 读取或写入一个不完整的帧缓冲 | +| 标记 | 代码 | 描述 | +| :------------------------------: | :--: | :------------------------------: | +| GL_NO_ERROR | 0 | 自上次调用glGetError以来没有错误 | +| GL_INVALID_ENUM | 1280 | 枚举参数不合法 | +| GL_INVALID_VALUE | 1281 | 值参数不合法 | +| GL_INVALID_OPERATION | 1282 | 一个指令的状态对指令的参数不合法 | +| GL_STACK_OVERFLOW | 1283 | 压栈操作造成栈上溢(Overflow) | +| GL_STACK_UNDERFLOW | 1284 | 弹栈操作时栈在最低点(译注:即栈下溢(Underflow)) | +| GL_OUT_OF_MEMORY | 1285 | 内存调用操作无法调用(足够的)内存 | +| GL_INVALID_FRAMEBUFFER_OPERATION | 1286 | 读取或写入一个不完整的帧缓冲 | 在OpenGL的函数文档中你可以找到函数在错误时生成的错误代码。比如说,如果你看一下[glBindTexture](http://docs.gl/gl3/glBindTexture)函数的文档,在 *Errors* 部分中你可以看到它可能生成的所有用户错误代码。 @@ -37,7 +37,7 @@ GLenum glGetError(); !!! important - 注意如果OpenGL是分布式(Distributely)运行的时候,经常像是在X11系统上,其它的用户错误代码仍然可以被生成,只要它们有着不同的错误代码。调用glGetError只会重置一个错误代码标记,而不是所有。由于这一点,我们通常会建议在一个循环中调用glGetError。 + 注意当OpenGL是分布式(Distributely)运行的时候,如在X11系统上,其它的用户错误代码仍然可以被生成,只要它们有着不同的错误代码。调用glGetError只会重置一个错误代码标记,而不是所有。由于这一点,我们通常会建议在一个循环中调用glGetError。 ```c++ glBindTexture(GL_TEXTURE_2D, tex); @@ -102,7 +102,7 @@ glGetError(); ## 调试输出 -虽然没有glGetError普遍,但一个叫做调试输出(Debug Output)的OpenGL拓展是一个非常有用的工具,它在4.3版本之后变为了核心OpenGL的一部分。通过使用调试输出拓展,OpenGL自身会直接发送一个比起glGetError更为完善的错误或警告信息给用户。它不仅提供了更多的信息,也能够帮助你使用一个调试器(Debugger)捕捉错误源头。 +虽然没有glGetError普遍,但一个叫做调试输出(Debug Output)的OpenGL拓展是一个非常有用的工具,它在4.3版本之后变为了核心OpenGL的一部分。通过使用调试输出拓展,OpenGL自身会直接发送一个比起glGetError更为完善的错误或警告信息给用户。它不仅提供了更多的信息,也能够帮助你使用调试器(Debugger)捕捉错误源头。 !!! important @@ -207,7 +207,7 @@ glDebugMessageControl(GL_DEBUG_SOURCE_API, 0, nullptr, GL_TRUE); ``` -有了我们的配置,如果你的上下文支持调试出书的话,每个不正确的OpenGL指令都会打印出一大堆的有用数据。 +有了我们的配置,如果你的上下文支持调试输出的话,每个不正确的OpenGL指令都会打印出一大堆的有用数据。 ![](../img/06/01/debugging_debug_output.png) @@ -266,7 +266,7 @@ void main() 通过多年的经验你会最终能够知道不同GPU供应商之间的细微差别,但如果你想要保证你的着色器代码在所有的机器上都能运行,你可以直接对着官方的标准使用OpenGL的GLSL[参考编译器](https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/)(Reference Compiler)来检查。你可以从[这里](https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/)下载所谓的GLSL语言校验器(GLSL Lang Validator)的可执行版本,或者从[这里](https://github.com/KhronosGroup/glslang)找到完整的源码。 -有了这个GLSL语言校验器,你可以很方便的检查你的着色器代码,只需要把着色器文件作为程序的第一格参数即可。注意GLSL语言校验器是通过下列固定的后缀名来决定着色器的类型的: +有了这个GLSL语言校验器,你可以很方便的检查你的着色器代码,只需要把着色器文件作为程序的第一个参数即可。注意GLSL语言校验器是通过下列固定的后缀名来决定着色器的类型的: - **.vert**:顶点着色器(Vertex Shader) - **.frag**:片段着色器(Fragment Shader) @@ -363,7 +363,7 @@ int main() ## 外部调试软件 -当上面所有介绍到的技巧都不能使用的时候,我们仍可以使用一个第三方的工具来帮助我们调试。第三方应用通常将它们自己注入到OpenGL驱动中,并且能够拦截各种OpenGL调用,给你大量有用的数据。这些工具可以在很多方面帮助到你:对OpenGL函数使用进行性能测试,寻找瓶颈,检查缓冲内存,显示纹理和帧缓冲附件。如果你正在写(大规模)生产代码,这类的工具在开发过程中是非常有用的。 +当上面所有介绍到的技巧都不能使用的时候,我们仍可以使用一个第三方的工具来帮助我们调试。第三方应用通常将它们自己注入到OpenGL驱动中,并且能够拦截各种OpenGL调用,给你大量有用的数据。这些工具可以在很多方面帮助到你:对OpenGL函数使用进行性能测试,寻找瓶颈,检查缓冲内存,显示纹理和帧缓冲附件。如果你正在写(大规模)产品代码,这类的工具在开发过程中是非常有用的。 我在下面列出了一些流行的调试工具,选几个尝试一下,看看哪个最适合你。 From 28c5116d76436545b370926c585dbcd0c41994cc Mon Sep 17 00:00:00 2001 From: aillieo Date: Sun, 7 May 2017 21:48:00 +0800 Subject: [PATCH 2/2] table format revert --- docs/06 In Practice/01 Debugging.md | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/06 In Practice/01 Debugging.md b/docs/06 In Practice/01 Debugging.md index 59e0cae..1c36125 100644 --- a/docs/06 In Practice/01 Debugging.md +++ b/docs/06 In Practice/01 Debugging.md @@ -1,10 +1,10 @@ # 调试 -| 原文 | [Debugging](http://learnopengl.com/#!In-Practice/Debugging) | -| ---- | ---------------------------------------- | -| 作者 | JoeydeVries | -| 翻译 | [Meow J](https://github.com/Meow-J) | -| 校对 | 暂无 | +原文 | [Debugging](http://learnopengl.com/#!In-Practice/Debugging) +----- | ---- +作者 | JoeydeVries +翻译 | [Meow J](https://github.com/Meow-J) +校对 | 暂无 图形编程可以带来很多的乐趣,然而如果什么东西渲染错误,或者甚至根本就没有渲染,它同样可以给你带来大量的沮丧感!由于我们大部分时间都在与像素打交道,当出现错误的时候寻找错误的源头可能会非常困难。调试(Debug)这样的**视觉**错误与往常熟悉的CPU调试不同。我们没有一个可以用来输出文本的控制台,在GLSL代码中也不能设置断点,更没有方法检测GPU的运行状态。 @@ -20,16 +20,16 @@ GLenum glGetError(); 当glGetError被调用时,它要么会返回错误标记之一,要么返回无错误。glGetError会返回的错误值如下: -| 标记 | 代码 | 描述 | -| :------------------------------: | :--: | :------------------------------: | -| GL_NO_ERROR | 0 | 自上次调用glGetError以来没有错误 | -| GL_INVALID_ENUM | 1280 | 枚举参数不合法 | -| GL_INVALID_VALUE | 1281 | 值参数不合法 | -| GL_INVALID_OPERATION | 1282 | 一个指令的状态对指令的参数不合法 | -| GL_STACK_OVERFLOW | 1283 | 压栈操作造成栈上溢(Overflow) | -| GL_STACK_UNDERFLOW | 1284 | 弹栈操作时栈在最低点(译注:即栈下溢(Underflow)) | -| GL_OUT_OF_MEMORY | 1285 | 内存调用操作无法调用(足够的)内存 | -| GL_INVALID_FRAMEBUFFER_OPERATION | 1286 | 读取或写入一个不完整的帧缓冲 | +| 标记 | 代码 | 描述 | +| :------: | :------: | :------: | +| GL_NO_ERROR | 0 | 自上次调用glGetError以来没有错误 | +| GL_INVALID_ENUM | 1280 | 枚举参数不合法 | +| GL_INVALID_VALUE | 1281 | 值参数不合法 | +| GL_INVALID_OPERATION | 1282 | 一个指令的状态对指令的参数不合法 | +| GL_STACK_OVERFLOW | 1283 | 压栈操作造成栈上溢(Overflow) | +| GL_STACK_UNDERFLOW | 1284 | 弹栈操作时栈在最低点(译注:即栈下溢(Underflow)) | +| GL_OUT_OF_MEMORY | 1285 | 内存调用操作无法调用(足够的)内存 | +| GL_INVALID_FRAMEBUFFER_OPERATION | 1286 | 读取或写入一个不完整的帧缓冲 | 在OpenGL的函数文档中你可以找到函数在错误时生成的错误代码。比如说,如果你看一下[glBindTexture](http://docs.gl/gl3/glBindTexture)函数的文档,在 *Errors* 部分中你可以看到它可能生成的所有用户错误代码。