44 lines
1.2 KiB
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);
|
|
}
|
|
}
|
|
|
|
|
|
}
|