Add some comments to Mesh class
This commit is contained in:
@@ -20,6 +20,16 @@ import static org.lwjgl.opengl.GL20.*;
|
|||||||
import static org.lwjgl.opengl.GL30.*;
|
import static org.lwjgl.opengl.GL30.*;
|
||||||
|
|
||||||
public class Mesh implements Renderable, Disposable {
|
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 int vaoId;
|
||||||
private final List<Integer> vboIds = new ArrayList<>(2);
|
private final List<Integer> vboIds = new ArrayList<>(2);
|
||||||
private final int elementsCount;
|
private final int elementsCount;
|
||||||
@@ -43,14 +53,14 @@ public class Mesh implements Renderable, Disposable {
|
|||||||
vboIds.add(vboId);
|
vboIds.add(vboId);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vboId);
|
glBindBuffer(GL_ARRAY_BUFFER, vboId);
|
||||||
glBufferData(GL_ARRAY_BUFFER, stack.mallocFloat(vertices.length).put(vertices).flip(), GL_STATIC_DRAW);
|
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
|
// Texture Coordinates VBO
|
||||||
vboId = glGenBuffers();
|
vboId = glGenBuffers();
|
||||||
vboIds.add(vboId);
|
vboIds.add(vboId);
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vboId);
|
glBindBuffer(GL_ARRAY_BUFFER, vboId);
|
||||||
glBufferData(GL_ARRAY_BUFFER, stack.mallocFloat(texCoords.length).put(texCoords).flip(), GL_STATIC_DRAW);
|
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
|
// Elements VBO
|
||||||
vboId = glGenBuffers();
|
vboId = glGenBuffers();
|
||||||
@@ -122,16 +132,53 @@ public class Mesh implements Renderable, Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Mesh quad(float width, float height, float originX, float originY) {
|
public static Mesh quad(float width, float height, float originX, float originY) {
|
||||||
var vertices = new float[] {
|
// 1 ----------- 2
|
||||||
-originX, -originY,
|
// | |
|
||||||
-originX, height - originY,
|
// | |
|
||||||
width - originX, height - originY,
|
// | |
|
||||||
width - originX, - originY
|
// | |
|
||||||
|
// | |
|
||||||
|
// 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);
|
return new Mesh(vertices, texCoords, elements);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user