Ginger3D/src/main/java/com/github/hydos/ginger/engine/vulkan/shaders/VKShaderManager.java

44 lines
1.2 KiB
Java

package com.github.hydos.ginger.engine.vulkan.shaders;
import static org.lwjgl.system.MemoryStack.stackPush;
import static org.lwjgl.vulkan.VK10.VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
import static org.lwjgl.vulkan.VK10.VK_SUCCESS;
import static org.lwjgl.vulkan.VK10.vkCreateShaderModule;
import java.nio.ByteBuffer;
import java.nio.LongBuffer;
import org.lwjgl.system.MemoryStack;
import org.lwjgl.vulkan.VkShaderModuleCreateInfo;
import com.github.hydos.ginger.engine.vulkan.VKVariables;
/**
* will be used in the future to manage multiple shaders
* @author hydos
*
*/
public class VKShaderManager
{
public static long createShaderModule(ByteBuffer spirvCode) {
try(MemoryStack stack = stackPush()) {
VkShaderModuleCreateInfo createInfo = VkShaderModuleCreateInfo.callocStack(stack);
createInfo.sType(VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO);
createInfo.pCode(spirvCode);
LongBuffer pShaderModule = stack.mallocLong(1);
if(vkCreateShaderModule(VKVariables.device, createInfo, null, pShaderModule) != VK_SUCCESS) {
throw new RuntimeException("Failed to create shader module");
}
return pShaderModule.get(0);
}
}
}