void GBuffer::CreateScreenQuad() { // Initialise buffers std::vector<Vertex> vertices = { Vertex(Vector3(-1.0f, 1.0f, 0.0f), Colour::White, Vector2(0.0f, 0.0f)), // bottom left Vertex(Vector3(1.0f, -1.0f, 0.0f), Colour::White, Vector2(1.0f, 1.0f)), // top right Vertex(Vector3(1.0f, 1.0f, 0.0f), Colour::White, Vector2(1.0f, 0.0f)), // bottom right Vertex(Vector3(-1.0f, -1.0f, 0.0f), Colour::White, Vector2(0.0f, 1.0f)) // top left }; std::vector<int> indices = { 1, 0, 2, 0, 1, 3 }; // Initialise screen quad for (int i = 0; i < GBUFFER_NUM_BUFFERS; ++i) { Material* material = ResourceFactory::CreateMaterial(); material->LoadPixelShader(GetRelativePath("Shaders\\Quad.hlsl"), "PSMain", "ps_5_1"); material->LoadVertexShader(GetRelativePath("Shaders\\Quad.hlsl"), "VSMain", "vs_5_1"); material->Finalise(Material::Default_Input_Layout, false, false); VertexBufferInstance* vertexBuffer = ResourceFactory::CreateVertexBufferInstance(VERTEX_POS_COL_UV); vertexBuffer->SetVertices(vertices); IndexBufferInstance* indexBuffer = ResourceFactory::CreateIndexBufferInstance(); indexBuffer->SetIndices(indices); _pScreenQuads[i] = new RenderObject(); _pScreenQuads[i]->SetVertexBuffer(vertexBuffer); _pScreenQuads[i]->SetIndexBuffer(indexBuffer); _pScreenQuads[i]->SetMaterial(material); _pScreenQuads[i]->Transform.SetIs2D(true); _pScreenQuads[i]->Transform.SetScale(0.5f, 0.5f, 1.0f); } _pScreenQuads[0]->Transform.SetPosition(-0.5f, 0.5f, 0.0f); _pScreenQuads[1]->Transform.SetPosition(0.5f, 0.5f, 0.0f); _pScreenQuads[2]->Transform.SetPosition(-0.5f, -0.5f, 0.0f); _pScreenQuads[3]->Transform.SetPosition(0.5f, -0.5f, 0.0f); _pScreenQuads[0]->GetMaterial()->SetTexture(_pTextures[0]); _pScreenQuads[1]->GetMaterial()->SetTexture(_pTextures[1]); _pScreenQuads[2]->GetMaterial()->SetTexture(_pTextures[2]); _pScreenQuads[3]->GetMaterial()->SetTexture(_pTextures[3]); _pScreenQuads[0]->GetMaterial()->SetDepthMode(false, ALWAYS); _pScreenQuads[1]->GetMaterial()->SetDepthMode(false, ALWAYS); _pScreenQuads[2]->GetMaterial()->SetDepthMode(false, ALWAYS); _pScreenQuads[3]->GetMaterial()->SetDepthMode(false, ALWAYS); }