(C code) I have some vertex and fragment shader codes(that i got with glslc compiler from google using -mfmt=c tag) that i put into a uint32_t variables like this:
uint32_t VertexCode[] = {
...
};
uint32_t FragmentCode[] = {
...
};
and i want to pass these arguments to a function that creates shader modules:
void CreateShaderModules(Program *ProgramState, uint32_t VertexCode[], uint32_t FragmentCode[]) {
size_t VertexCodeSize = sizeof(VertexCode) / sizeof(VertexCode[0]);
VkResult VertexResult = vkCreateShaderModule(
ProgramState->initialize.Device,
&(VkShaderModuleCreateInfo)
{
.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
.codeSize = VertexCodeSize,
.pCode = VertexCode,
},
ProgramState->Allocator,
&ProgramState->graphics.VertexModule
);
size_t FragmentCodeSize = sizeof(FragmentCode) / sizeof(FragmentCode[0]);
VkResult FragmentResult = vkCreateShaderModule(
ProgramState->initialize.Device,
&(VkShaderModuleCreateInfo)
{
.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
.codeSize = FragmentCodeSize,
.pCode = FragmentCode,
},
ProgramState->Allocator,
&ProgramState->graphics.FragmentModule
);
};
when i try to get size, i get this error:
'sizeo
' on array function parameter 'FragmentCode' will return size of 'uint32_t *' {aka 'unsigned int *'} [-Wsizeof-array-argument]
59 | size_t FragmentCodeSize = sizeof(FragmentCode) / sizeof(FragmentCode[0]);
|
``` same for vertex shader