package com.javamarcher.geometry; import com.javamarcher.ecs.component.Transform; public class Quad { private Transform transform = new Transform(); private final VertexData[] vertices; // OpenGL expects to draw vertices in counter clockwise order by default private final byte[] indices = { 0, 1, 2, // Left bottom triangle 2, 3, 0 // Right top triangle }; public Quad() { vertices = setupVertexData(); } private VertexData[] setupVertexData() { // The z-coordinate of the vertex positions is used as an index for the frustum rays final VertexData v1 = new VertexData(); // Top Left v1.setPosition(-1f, 1f, 0f); v1.setColor(1f, 0f, 0f); v1.setUV(0f, 0f); final VertexData v2 = new VertexData(); // Bottom Left v2.setPosition(-1f, -1f, 3f); v2.setColor(0f, 1f, 0f); v2.setUV(0f, 1f); final VertexData v3 = new VertexData(); // Bottom Right v3.setPosition(1f, -1f, 2f); v3.setColor(0f, 0f, 1f); v1.setUV(1f, 1f); final VertexData v4 = new VertexData(); // Top Right v4.setPosition(1f, 1f, 1f); v4.setColor(1f, 1f, 1f); v1.setUV(1f, 0f); return new VertexData[] {v1, v2, v3, v4}; } public Transform getTransform() { return transform; } public VertexData[] getVertices() { return vertices; } public byte[] getIndices() { return indices; } }