Ginger3D/src/main/java/com/github/hydos/ginger/engine/vulkan/model/VKVertex.java

68 lines
2.2 KiB
Java

package com.github.hydos.ginger.engine.vulkan.model;
import static org.lwjgl.vulkan.VK10.*;
import org.joml.*;
import org.lwjgl.vulkan.*;
public class VKVertex
{
public static final int SIZEOF = (3 + 3 + 2) * Float.BYTES;
public static final int OFFSETOF_POS = 0;
public static final int OFFSETOF_COLOR = 3 * Float.BYTES;
public static final int OFFSETOF_TEXTCOORDS = (3 + 3) * Float.BYTES;
public Vector3fc pos;
public Vector3fc color;
public Vector2fc texCoords;
public VKVertex(Vector3fc pos, Vector3fc color, Vector2fc texCoords) {
this.pos = pos;
this.color = color;
this.texCoords = texCoords;
}
public static VkVertexInputBindingDescription.Buffer getBindingDescription() {
VkVertexInputBindingDescription.Buffer bindingDescription =
VkVertexInputBindingDescription.callocStack(1);
bindingDescription.binding(0);
bindingDescription.stride(VKVertex.SIZEOF);
bindingDescription.inputRate(VK_VERTEX_INPUT_RATE_VERTEX);
return bindingDescription;
}
public static VkVertexInputAttributeDescription.Buffer getAttributeDescriptions() {
VkVertexInputAttributeDescription.Buffer attributeDescriptions =
VkVertexInputAttributeDescription.callocStack(3);
// Position
VkVertexInputAttributeDescription posDescription = attributeDescriptions.get(0);
posDescription.binding(0);
posDescription.location(0);
posDescription.format(VK_FORMAT_R32G32B32_SFLOAT);
posDescription.offset(OFFSETOF_POS);
// Color
VkVertexInputAttributeDescription colorDescription = attributeDescriptions.get(1);
colorDescription.binding(0);
colorDescription.location(1);
colorDescription.format(VK_FORMAT_R32G32B32_SFLOAT);
colorDescription.offset(OFFSETOF_COLOR);
// Texture coordinates
VkVertexInputAttributeDescription texCoordsDescription = attributeDescriptions.get(2);
texCoordsDescription.binding(0);
texCoordsDescription.location(2);
texCoordsDescription.format(VK_FORMAT_R32G32_SFLOAT);
texCoordsDescription.offset(OFFSETOF_TEXTCOORDS);
return attributeDescriptions.rewind();
}
}