diff --git a/source/05-more-on-rendering.md b/source/05-more-on-rendering.md index fc8adb1..42a77e9 100644 --- a/source/05-more-on-rendering.md +++ b/source/05-more-on-rendering.md @@ -104,7 +104,7 @@ public void cleanup() { glDrawArrays(GL_TRIANGLES, 0, mesh.getVertexCount()); ``` -`Mesh`类通过将坐标数组除以3来计算顶点的数目(因为我们使用X,Y和Z坐标)。现在,我们可以渲染更复杂的形状。来渲染一个四边形吧。一个四边形可以用两个三角形来组成,如图所示。 +`Mesh`类通过将坐标数组除以3来计算顶点的数目(因为我们使用X,Y和Z坐标)。现在,我们可以渲染更复杂的形状。来渲染一个正方形吧。一个正方形可以用两个三角形来组成,如图所示。 ![Quad coordinates](_static/05/quad_coordinates.png) @@ -126,15 +126,15 @@ public void init() throws Exception { } ``` -现在你应该可以看到这样一个四边形: +现在你应该可以看到这样一个正方形: ![Quad rendered](_static/05/quad_rendered.png) -我们完成了吗?没有。上面的代码仍然存在一些问题。我们使用了重复的坐标来表示四边形。我们传递了两次V2和V4坐标。这是个小形状,它可能不是什么大问题,但想象一个更复杂的3D模型,我们会多次重复传递坐标。记住,我们使用三个浮点数表示顶点的位置,但稍后我们将需要更多的数据来表示纹理等。考虑到在更复杂的形状中,三角形直接共享的顶点数量可以更高,如图所示(其中顶点可以在六个三角形之间共享)。 +我们完成了吗?没有。上面的代码仍然存在一些问题。我们使用了重复的坐标来表示正方形。我们传递了两次V2和V4坐标。这是个小形状,它可能不是什么大问题,但想象一个更复杂的3D模型,我们会多次重复传递坐标。记住,我们使用三个浮点数表示顶点的位置,但稍后我们将需要更多的数据来表示纹理等。考虑到在更复杂的形状中,三角形直接共享的顶点数量可以更高,如图所示(其中顶点可以在六个三角形之间共享)。 ![Dolphin](_static/05/dolphin.png) -最后,我们需要更多的内存来储存重复的数据,这就是索引缓冲区(`Index Buffer`)发挥作用的地方。为了绘制四边形,我们只需要以这样的方式指定每个顶点:V1, V2, V3, V4。每个顶点在数组中都有一个位置。V1在位置0上,V2在位置1上等。 +最后,我们需要更多的内存来储存重复的数据,这就是索引缓冲区(`Index Buffer`)发挥作用的地方。为了绘制正方形,我们只需要以这样的方式指定每个顶点:V1, V2, V3, V4。每个顶点在数组中都有一个位置。V1在位置0上,V2在位置1上等。 | V1 | V2 | V3 | V4 | | --- | --- | --- | --- | @@ -219,7 +219,7 @@ public void init() throws Exception { } ``` -现在给示例代码增加颜色吧。我们把另一组浮点数传递给`Mesh`类,它储存了四边形中每个顶点的颜色。 +现在给示例代码增加颜色吧。我们把另一组浮点数传递给`Mesh`类,它储存了正方形中每个顶点的颜色。 ```java public Mesh(float[] positions, float[] colours, int[] indices) { @@ -292,7 +292,7 @@ public void render(Window window, Mesh mesh) { // ... ``` -你可以看到,在渲染过程中,我们需要启用位于位置1的VAO属性。现在可以把颜色传递给`Mesh`类,以便给四边形添加颜色。 +你可以看到,在渲染过程中,我们需要启用位于位置1的VAO属性。现在可以把颜色传递给`Mesh`类,以便给正方形添加颜色。 ```java float[] colours = new float[]{ @@ -303,7 +303,7 @@ float[] colours = new float[]{ }; ``` -然后会得到这样一个色彩鲜艳的四边形。 +然后会得到这样一个色彩鲜艳的正方形。 ![Coloured quad](_static/05/coloured_quad.png)