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

Method Initialize

engine/graphics/src/test/test_app_graphics.cpp:707–767  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

705 dmGraphics::HVertexBuffer m_VertexBuffer;
706
707 void Initialize(EngineCtx* engine) override
708 {
709 const float vertex_data_no_index[] = {
710 -0.5f, -0.5f,
711 0.5f, -0.5f,
712 -0.5f, 0.5f,
713 0.5f, -0.5f,
714 0.5f, 0.5f,
715 -0.5f, 0.5f,
716 };
717
718 m_VertexBuffer = dmGraphics::NewVertexBuffer(engine->m_GraphicsContext, sizeof(vertex_data_no_index), (void*) vertex_data_no_index, dmGraphics::BUFFER_USAGE_STATIC_DRAW);
719
720 dmGraphics::ShaderDesc vs_desc = {};
721 dmGraphics::ShaderDesc fs_desc = {};
722
723 if (dmGraphics::GetInstalledAdapterFamily() == dmGraphics::ADAPTER_FAMILY_OPENGL)
724 {
725 assert(false && "TODO: storage buffers are only supported on vulkan currently");
726 AddShader(&vs_desc, dmGraphics::ShaderDesc::LANGUAGE_GLSL_SM430, (uint8_t*) graphics_assets::glsl_vertex_program, sizeof(graphics_assets::glsl_vertex_program));
727 AddShader(&fs_desc, dmGraphics::ShaderDesc::LANGUAGE_GLSL_SM430, (uint8_t*) graphics_assets::glsl_fragment_program_ssbo, sizeof(graphics_assets::glsl_fragment_program_ssbo));
728 }
729 else
730 {
731 AddShader(&vs_desc, dmGraphics::ShaderDesc::LANGUAGE_SPIRV, (uint8_t*) graphics_assets::spirv_vertex_program, sizeof(graphics_assets::spirv_vertex_program));
732 AddShader(&fs_desc, dmGraphics::ShaderDesc::LANGUAGE_SPIRV, (uint8_t*) graphics_assets::spirv_fragment_program_ssbo, sizeof(graphics_assets::spirv_fragment_program_ssbo));
733 }
734
735 AddShaderResource(&vs_desc, "pos", dmGraphics::ShaderDesc::ShaderDataType::SHADER_TYPE_VEC2, 0, 0, BINDING_TYPE_INPUT);
736 AddShaderResource(&fs_desc, "Test", dmGraphics::ShaderDesc::SHADER_TYPE_STORAGE_BUFFER, 0, 1, BINDING_TYPE_STORAGE_BUFFER);
737
738 dmGraphics::HVertexProgram vs_program = dmGraphics::NewVertexProgram(engine->m_GraphicsContext, &vs_desc, 0, 0);
739 dmGraphics::HFragmentProgram fs_program = dmGraphics::NewFragmentProgram(engine->m_GraphicsContext, &fs_desc, 0, 0);
740
741 DeleteShaderDesc(&vs_desc);
742 DeleteShaderDesc(&fs_desc);
743
744 m_Program = dmGraphics::NewProgram(engine->m_GraphicsContext, vs_program, fs_program);
745
746 dmGraphics::HVertexStreamDeclaration stream_declaration = dmGraphics::NewVertexStreamDeclaration(engine->m_GraphicsContext);
747 dmGraphics::AddVertexStream(stream_declaration, "pos", 2, dmGraphics::TYPE_FLOAT, false);
748 m_VertexDeclaration = dmGraphics::NewVertexDeclaration(engine->m_GraphicsContext, stream_declaration);
749
750 struct StorageBuffer_Data
751 {
752 float m_Member1[4];
753 };
754
755 StorageBuffer_Data storage_data[16] = {};
756
757 for (int i = 0; i < DM_ARRAY_SIZE(storage_data); ++i)
758 {
759 storage_data[i].m_Member1[0] = (float) (10 * i + 0);
760 storage_data[i].m_Member1[1] = (float) (10 * i + 1);
761 storage_data[i].m_Member1[2] = (float) (10 * i + 2);
762 storage_data[i].m_Member1[3] = (float) (10 * i + 3);
763 }
764

Callers

nothing calls this directly

Calls 10

NewVertexBufferFunction · 0.85
AddShaderFunction · 0.85
AddShaderResourceFunction · 0.85
DeleteShaderDescFunction · 0.85
NewProgramFunction · 0.85
AddVertexStreamFunction · 0.85
NewVertexDeclarationFunction · 0.85
assertFunction · 0.50

Tested by

no test coverage detected