Skip to content

Commit 7ab8dd9

Browse files
committed
Attribute locations set-up upon Mesh creation
1 parent e30d9e1 commit 7ab8dd9

File tree

59 files changed

+1956
-1470
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1956
-1470
lines changed

chapter04/src/main/java/org/lwjglb/game/Renderer.java

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,32 @@
11
package org.lwjglb.game;
22

3-
import java.nio.FloatBuffer;
4-
import static org.lwjgl.opengl.GL11.*;
5-
import static org.lwjgl.opengl.GL15.*;
6-
import static org.lwjgl.opengl.GL20.*;
7-
import static org.lwjgl.opengl.GL30.*;
83
import org.lwjgl.system.MemoryUtil;
94
import org.lwjglb.engine.Utils;
105
import org.lwjglb.engine.Window;
116
import org.lwjglb.engine.graph.ShaderProgram;
127

8+
import java.nio.FloatBuffer;
9+
10+
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
11+
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
12+
import static org.lwjgl.opengl.GL11.GL_FLOAT;
13+
import static org.lwjgl.opengl.GL11.GL_TRIANGLES;
14+
import static org.lwjgl.opengl.GL11.glClear;
15+
import static org.lwjgl.opengl.GL11.glDrawArrays;
16+
import static org.lwjgl.opengl.GL11.glViewport;
17+
import static org.lwjgl.opengl.GL15.GL_ARRAY_BUFFER;
18+
import static org.lwjgl.opengl.GL15.GL_STATIC_DRAW;
19+
import static org.lwjgl.opengl.GL15.glBindBuffer;
20+
import static org.lwjgl.opengl.GL15.glBufferData;
21+
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
22+
import static org.lwjgl.opengl.GL15.glGenBuffers;
23+
import static org.lwjgl.opengl.GL20.glDisableVertexAttribArray;
24+
import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray;
25+
import static org.lwjgl.opengl.GL20.glVertexAttribPointer;
26+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
27+
import static org.lwjgl.opengl.GL30.glDeleteVertexArrays;
28+
import static org.lwjgl.opengl.GL30.glGenVertexArrays;
29+
1330
public class Renderer {
1431

1532
private int vboId;
@@ -28,9 +45,9 @@ public void init() throws Exception {
2845
shaderProgram.link();
2946

3047
float[] vertices = new float[]{
31-
0.0f, 0.5f, 0.0f,
32-
-0.5f, -0.5f, 0.0f,
33-
0.5f, -0.5f, 0.0f
48+
0.0f, 0.5f, 0.0f,
49+
-0.5f, -0.5f, 0.0f,
50+
0.5f, -0.5f, 0.0f
3451
};
3552

3653
FloatBuffer verticesBuffer = null;
@@ -46,6 +63,8 @@ public void init() throws Exception {
4663
vboId = glGenBuffers();
4764
glBindBuffer(GL_ARRAY_BUFFER, vboId);
4865
glBufferData(GL_ARRAY_BUFFER, verticesBuffer, GL_STATIC_DRAW);
66+
// Enable location 0
67+
glEnableVertexAttribArray(0);
4968
// Define structure of the data
5069
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
5170

@@ -77,13 +96,11 @@ public void render(Window window) {
7796

7897
// Bind to the VAO
7998
glBindVertexArray(vaoId);
80-
glEnableVertexAttribArray(0);
8199

82100
// Draw the vertices
83101
glDrawArrays(GL_TRIANGLES, 0, 3);
84102

85103
// Restore state
86-
glDisableVertexAttribArray(0);
87104
glBindVertexArray(0);
88105

89106
shaderProgram.unbind();

chapter05/c05-p1/src/main/java/org/lwjglb/engine/graph/Mesh.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
package org.lwjglb.engine.graph;
22

3+
import org.lwjgl.system.MemoryUtil;
4+
35
import java.nio.FloatBuffer;
46
import java.nio.IntBuffer;
5-
import static org.lwjgl.opengl.GL11.*;
6-
import static org.lwjgl.opengl.GL15.*;
7-
import static org.lwjgl.opengl.GL20.*;
8-
import static org.lwjgl.opengl.GL30.*;
9-
import org.lwjgl.system.MemoryUtil;
7+
8+
import static org.lwjgl.opengl.GL11.GL_FLOAT;
9+
import static org.lwjgl.opengl.GL15.GL_ARRAY_BUFFER;
10+
import static org.lwjgl.opengl.GL15.GL_ELEMENT_ARRAY_BUFFER;
11+
import static org.lwjgl.opengl.GL15.GL_STATIC_DRAW;
12+
import static org.lwjgl.opengl.GL15.glBindBuffer;
13+
import static org.lwjgl.opengl.GL15.glBufferData;
14+
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
15+
import static org.lwjgl.opengl.GL15.glGenBuffers;
16+
import static org.lwjgl.opengl.GL20.glDisableVertexAttribArray;
17+
import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray;
18+
import static org.lwjgl.opengl.GL20.glVertexAttribPointer;
19+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
20+
import static org.lwjgl.opengl.GL30.glDeleteVertexArrays;
21+
import static org.lwjgl.opengl.GL30.glGenVertexArrays;
1022

1123
public class Mesh {
1224

@@ -33,6 +45,7 @@ public Mesh(float[] positions, int[] indices) {
3345
posBuffer.put(positions).flip();
3446
glBindBuffer(GL_ARRAY_BUFFER, posVboId);
3547
glBufferData(GL_ARRAY_BUFFER, posBuffer, GL_STATIC_DRAW);
48+
glEnableVertexAttribArray(0);
3649
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
3750

3851
// Index VBO

chapter05/c05-p1/src/main/java/org/lwjglb/game/Renderer.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package org.lwjglb.game;
22

3-
import static org.lwjgl.opengl.GL11.*;
4-
import static org.lwjgl.opengl.GL20.*;
5-
import static org.lwjgl.opengl.GL30.*;
63
import org.lwjglb.engine.Utils;
74
import org.lwjglb.engine.Window;
85
import org.lwjglb.engine.graph.Mesh;
96
import org.lwjglb.engine.graph.ShaderProgram;
107

8+
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
9+
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
10+
import static org.lwjgl.opengl.GL11.GL_TRIANGLES;
11+
import static org.lwjgl.opengl.GL11.GL_UNSIGNED_INT;
12+
import static org.lwjgl.opengl.GL11.glClear;
13+
import static org.lwjgl.opengl.GL11.glDrawElements;
14+
import static org.lwjgl.opengl.GL11.glViewport;
15+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
16+
1117
public class Renderer {
1218

1319
private ShaderProgram shaderProgram;
@@ -38,11 +44,9 @@ public void render(Window window, Mesh mesh) {
3844

3945
// Draw the mesh
4046
glBindVertexArray(mesh.getVaoId());
41-
glEnableVertexAttribArray(0);
4247
glDrawElements(GL_TRIANGLES, mesh.getVertexCount(), GL_UNSIGNED_INT, 0);
4348

4449
// Restore state
45-
glDisableVertexAttribArray(0);
4650
glBindVertexArray(0);
4751

4852
shaderProgram.unbind();

chapter05/c05-p2/src/main/java/org/lwjglb/engine/graph/Mesh.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
package org.lwjglb.engine.graph;
22

3+
import org.lwjgl.system.MemoryUtil;
4+
35
import java.nio.FloatBuffer;
46
import java.nio.IntBuffer;
5-
import static org.lwjgl.opengl.GL11.*;
6-
import static org.lwjgl.opengl.GL15.*;
7-
import static org.lwjgl.opengl.GL20.*;
8-
import static org.lwjgl.opengl.GL30.*;
9-
import org.lwjgl.system.MemoryUtil;
7+
8+
import static org.lwjgl.opengl.GL11.GL_FLOAT;
9+
import static org.lwjgl.opengl.GL15.GL_ARRAY_BUFFER;
10+
import static org.lwjgl.opengl.GL15.GL_ELEMENT_ARRAY_BUFFER;
11+
import static org.lwjgl.opengl.GL15.GL_STATIC_DRAW;
12+
import static org.lwjgl.opengl.GL15.glBindBuffer;
13+
import static org.lwjgl.opengl.GL15.glBufferData;
14+
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
15+
import static org.lwjgl.opengl.GL15.glGenBuffers;
16+
import static org.lwjgl.opengl.GL20.glDisableVertexAttribArray;
17+
import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray;
18+
import static org.lwjgl.opengl.GL20.glVertexAttribPointer;
19+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
20+
import static org.lwjgl.opengl.GL30.glDeleteVertexArrays;
21+
import static org.lwjgl.opengl.GL30.glGenVertexArrays;
1022

1123
public class Mesh {
1224

@@ -36,6 +48,7 @@ public Mesh(float[] positions, float[] colours, int[] indices) {
3648
posBuffer.put(positions).flip();
3749
glBindBuffer(GL_ARRAY_BUFFER, posVboId);
3850
glBufferData(GL_ARRAY_BUFFER, posBuffer, GL_STATIC_DRAW);
51+
glEnableVertexAttribArray(0);
3952
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
4053

4154
// Colour VBO
@@ -44,6 +57,7 @@ public Mesh(float[] positions, float[] colours, int[] indices) {
4457
colourBuffer.put(colours).flip();
4558
glBindBuffer(GL_ARRAY_BUFFER, colourVboId);
4659
glBufferData(GL_ARRAY_BUFFER, colourBuffer, GL_STATIC_DRAW);
60+
glEnableVertexAttribArray(1);
4761
glVertexAttribPointer(1, 3, GL_FLOAT, false, 0, 0);
4862

4963
// Index VBO

chapter05/c05-p2/src/main/java/org/lwjglb/game/Renderer.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
package org.lwjglb.game;
22

3-
import static org.lwjgl.opengl.GL11.*;
4-
import static org.lwjgl.opengl.GL20.*;
5-
import static org.lwjgl.opengl.GL30.*;
63
import org.lwjglb.engine.Utils;
74
import org.lwjglb.engine.Window;
85
import org.lwjglb.engine.graph.Mesh;
96
import org.lwjglb.engine.graph.ShaderProgram;
107

8+
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
9+
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
10+
import static org.lwjgl.opengl.GL11.GL_TRIANGLES;
11+
import static org.lwjgl.opengl.GL11.GL_UNSIGNED_INT;
12+
import static org.lwjgl.opengl.GL11.glClear;
13+
import static org.lwjgl.opengl.GL11.glDrawElements;
14+
import static org.lwjgl.opengl.GL11.glViewport;
15+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
16+
1117
public class Renderer {
1218

1319
private ShaderProgram shaderProgram;
@@ -29,7 +35,7 @@ public void clear() {
2935
public void render(Window window, Mesh mesh) {
3036
clear();
3137

32-
if ( window.isResized() ) {
38+
if (window.isResized()) {
3339
glViewport(0, 0, window.getWidth(), window.getHeight());
3440
window.setResized(false);
3541
}
@@ -38,13 +44,9 @@ public void render(Window window, Mesh mesh) {
3844

3945
// Draw the mesh
4046
glBindVertexArray(mesh.getVaoId());
41-
glEnableVertexAttribArray(0);
42-
glEnableVertexAttribArray(1);
4347
glDrawElements(GL_TRIANGLES, mesh.getVertexCount(), GL_UNSIGNED_INT, 0);
4448

4549
// Restore state
46-
glDisableVertexAttribArray(0);
47-
glDisableVertexAttribArray(1);
4850
glBindVertexArray(0);
4951

5052
shaderProgram.unbind();

chapter06/c06-p1/src/main/java/org/lwjglb/engine/graph/Mesh.java

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
package org.lwjglb.engine.graph;
22

3+
import org.lwjgl.system.MemoryUtil;
4+
35
import java.nio.FloatBuffer;
46
import java.nio.IntBuffer;
5-
import static org.lwjgl.opengl.GL11.*;
6-
import static org.lwjgl.opengl.GL15.*;
7-
import static org.lwjgl.opengl.GL20.*;
8-
import static org.lwjgl.opengl.GL30.*;
9-
import org.lwjgl.system.MemoryUtil;
7+
8+
import static org.lwjgl.opengl.GL11.GL_FLOAT;
9+
import static org.lwjgl.opengl.GL15.GL_ARRAY_BUFFER;
10+
import static org.lwjgl.opengl.GL15.GL_ELEMENT_ARRAY_BUFFER;
11+
import static org.lwjgl.opengl.GL15.GL_STATIC_DRAW;
12+
import static org.lwjgl.opengl.GL15.glBindBuffer;
13+
import static org.lwjgl.opengl.GL15.glBufferData;
14+
import static org.lwjgl.opengl.GL15.glDeleteBuffers;
15+
import static org.lwjgl.opengl.GL15.glGenBuffers;
16+
import static org.lwjgl.opengl.GL20.glDisableVertexAttribArray;
17+
import static org.lwjgl.opengl.GL20.glEnableVertexAttribArray;
18+
import static org.lwjgl.opengl.GL20.glVertexAttribPointer;
19+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
20+
import static org.lwjgl.opengl.GL30.glDeleteVertexArrays;
21+
import static org.lwjgl.opengl.GL30.glGenVertexArrays;
1022

1123
public class Mesh {
1224

@@ -36,6 +48,7 @@ public Mesh(float[] positions, float[] colours, int[] indices) {
3648
posBuffer.put(positions).flip();
3749
glBindBuffer(GL_ARRAY_BUFFER, posVboId);
3850
glBufferData(GL_ARRAY_BUFFER, posBuffer, GL_STATIC_DRAW);
51+
glEnableVertexAttribArray(0);
3952
glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
4053

4154
// Colour VBO
@@ -44,6 +57,7 @@ public Mesh(float[] positions, float[] colours, int[] indices) {
4457
colourBuffer.put(colours).flip();
4558
glBindBuffer(GL_ARRAY_BUFFER, colourVboId);
4659
glBufferData(GL_ARRAY_BUFFER, colourBuffer, GL_STATIC_DRAW);
60+
glEnableVertexAttribArray(1);
4761
glVertexAttribPointer(1, 3, GL_FLOAT, false, 0, 0);
4862

4963
// Index VBO

chapter06/c06-p1/src/main/java/org/lwjglb/game/Renderer.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package org.lwjglb.game;
22

33
import org.joml.Matrix4f;
4-
import static org.lwjgl.opengl.GL11.*;
5-
import static org.lwjgl.opengl.GL20.*;
6-
import static org.lwjgl.opengl.GL30.*;
74
import org.lwjglb.engine.Utils;
85
import org.lwjglb.engine.Window;
96
import org.lwjglb.engine.graph.Mesh;
107
import org.lwjglb.engine.graph.ShaderProgram;
118

9+
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
10+
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
11+
import static org.lwjgl.opengl.GL11.GL_TRIANGLES;
12+
import static org.lwjgl.opengl.GL11.GL_UNSIGNED_INT;
13+
import static org.lwjgl.opengl.GL11.glClear;
14+
import static org.lwjgl.opengl.GL11.glDrawElements;
15+
import static org.lwjgl.opengl.GL11.glViewport;
16+
import static org.lwjgl.opengl.GL30.glBindVertexArray;
17+
1218
public class Renderer {
1319

1420
/**
@@ -33,10 +39,10 @@ public void init(Window window) throws Exception {
3339
shaderProgram.createVertexShader(Utils.loadResource("/vertex.vs"));
3440
shaderProgram.createFragmentShader(Utils.loadResource("/fragment.fs"));
3541
shaderProgram.link();
36-
42+
3743
// Create projection matrix
3844
float aspectRatio = (float) window.getWidth() / window.getHeight();
39-
projectionMatrix = new Matrix4f().perspective(FOV, aspectRatio, Z_NEAR, Z_FAR);
45+
projectionMatrix = new Matrix4f().perspective(Renderer.FOV, aspectRatio, Renderer.Z_NEAR, Renderer.Z_FAR);
4046
shaderProgram.createUniform("projectionMatrix");
4147
}
4248

@@ -47,7 +53,7 @@ public void clear() {
4753
public void render(Window window, Mesh mesh) {
4854
clear();
4955

50-
if ( window.isResized() ) {
56+
if (window.isResized()) {
5157
glViewport(0, 0, window.getWidth(), window.getHeight());
5258
window.setResized(false);
5359
}
@@ -57,14 +63,10 @@ public void render(Window window, Mesh mesh) {
5763

5864
// Draw the mesh
5965
glBindVertexArray(mesh.getVaoId());
60-
glEnableVertexAttribArray(0);
61-
glEnableVertexAttribArray(1);
6266

6367
glDrawElements(GL_TRIANGLES, mesh.getVertexCount(), GL_UNSIGNED_INT, 0);
6468

6569
// Restore state
66-
glDisableVertexAttribArray(0);
67-
glDisableVertexAttribArray(1);
6870
glBindVertexArray(0);
6971

7072
shaderProgram.unbind();

0 commit comments

Comments
 (0)