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.*;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user