Add some comments to Mesh class

This commit is contained in:
2025-07-15 23:27:44 +02:00
parent dda12589a7
commit c89a1f1d2e

View File

@@ -20,6 +20,16 @@ import static org.lwjgl.opengl.GL20.*;
import static org.lwjgl.opengl.GL30.*;
public class Mesh implements Renderable, Disposable {
// default.vs: layout(location=0) in vec2 position;
// ^ ^
private static final int POSITION_VECTOR_LAYOUT_INDEX = 0;
private static final int POSITION_VECTOR_LENGTH = 2;
// default.vs: layout(location=1) in vec2 texCoord;
// ^ ^
private static final int TEX_COORDS_VECTOR_LAYOUT_INDEX = 1;
private static final int TEX_COORDS_VECTOR_LENGTH = 2;
private final int vaoId;
private final List<Integer> vboIds = new ArrayList<>(2);
private final int elementsCount;
@@ -43,14 +53,14 @@ public class Mesh implements Renderable, Disposable {
vboIds.add(vboId);
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, stack.mallocFloat(vertices.length).put(vertices).flip(), GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, false, 0, 0);
glVertexAttribPointer(POSITION_VECTOR_LAYOUT_INDEX, POSITION_VECTOR_LENGTH, GL_FLOAT, false, 0, 0);
// Texture Coordinates VBO
vboId = glGenBuffers();
vboIds.add(vboId);
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, stack.mallocFloat(texCoords.length).put(texCoords).flip(), GL_STATIC_DRAW);
glVertexAttribPointer(1, 2, GL_FLOAT, false, 0, 0);
glVertexAttribPointer(TEX_COORDS_VECTOR_LAYOUT_INDEX, TEX_COORDS_VECTOR_LENGTH, GL_FLOAT, false, 0, 0);
// Elements VBO
vboId = glGenBuffers();
@@ -122,16 +132,53 @@ public class Mesh implements Renderable, Disposable {
}
public static Mesh quad(float width, float height, float originX, float originY) {
var vertices = new float[] {
-originX, -originY,
-originX, height - originY,
width - originX, height - originY,
width - originX, - originY
// 1 ----------- 2
// | |
// | |
// | |
// | |
// | |
// 0 ----------- 3
var vertices = new float[]{
-originX, -originY, // 0 - bottom left
-originX, height - originY, // 1 - top left
width - originX, height - originY, // 2 - top right
width - originX, -originY // 3 - bottom right
};
var texCoords = new float[] { 0, 0, 0, 1, 1, 1, 1, 0 };
// Texture: Quad:
// (0,1) ---- (1,1) 1 ----------- 2
// | | | |
// | | => | TEKSTURA |
// | | | |
// (0,0) ---- (1,0) 0 ----------- 3
var texCoords = new float[]{
0, 0, // 0 - bottom left
0, 1, // 1 - top left
1, 1, // 2 - top right
1, 0 // 3 - bottom right
};
var elements = new int[] { 0, 1, 2, 2, 3, 0 };
var elements = new int[]{
// First triangle: indices 0-1-2
// 1 ----------- 2
// |XXXXXXXXXXX |
// |XXXXXXXX |
// |XXXXX |
// |XX |
// 0 ----------- 3
0, 1, 2,
// Second triangle: indices 2-3-0
// 1 ----------- 2
// | X|
// | XXXX|
// | XXXXXXX|
// | XXXXXXXXXX|
// 0 ----------- 3
2, 3, 0
};
return new Mesh(vertices, texCoords, elements);
}