MCPcopy Create free account
hub / github.com/defold/defold / GetShaderProgram

Function GetShaderProgram

engine/graphics/src/graphics.cpp:392–420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

390 }
391
392 bool GetShaderProgram(HContext context, ShaderDesc* shader_desc, ShaderDesc::Shader** vp, ShaderDesc::Shader** fp, ShaderDesc::Shader** cp)
393 {
394 assert(shader_desc);
395 ShaderDesc::Shader* selected_shader_vp = GetShader(context, shader_desc, ShaderDesc::SHADER_TYPE_VERTEX);
396 ShaderDesc::Shader* selected_shader_fp = GetShader(context, shader_desc, ShaderDesc::SHADER_TYPE_FRAGMENT);
397
398 if (selected_shader_vp && selected_shader_fp)
399 {
400 *vp = selected_shader_vp;
401 *fp = selected_shader_fp;
402 return true;
403 }
404
405 ShaderDesc::Shader* selected_shader = GetShader(context, shader_desc, ShaderDesc::SHADER_TYPE_COMPUTE);
406 if (selected_shader)
407 {
408 *cp = selected_shader;
409 return true;
410 }
411
412 const char* extra_msg = "";
413 if (HasShader(shader_desc, ShaderDesc::SHADER_TYPE_COMPUTE) != 0x0 && !IsContextFeatureSupported(context, CONTEXT_FEATURE_COMPUTE_SHADER))
414 {
415 extra_msg = "Reason: Compute shaders are not supported.";
416 }
417
418 dmLogError("Unable to get a valid shader from a ShaderDesc for this context. %s", extra_msg);
419 return 0;
420 }
421
422 uint32_t GetBufferTypeIndex(BufferType buffer_type)
423 {

Callers 9

DX12NewProgramFunction · 0.85
NullNewProgramFunction · 0.85
NullReloadProgramFunction · 0.85
OpenGLNewProgramFunction · 0.85
OpenGLReloadProgramFunction · 0.85
VulkanNewProgramFunction · 0.85
VulkanReloadProgramFunction · 0.85
WebGPUNewProgramFunction · 0.85
WebGPUReloadProgramFunction · 0.85

Calls 4

GetShaderFunction · 0.85
HasShaderFunction · 0.85
assertFunction · 0.50

Tested by

no test coverage detected