text: #include "world_viewport.h"
  #include "imgui.h"
  
  #include "global_allocators.h"
  
  #include <d3d11.h>
  
  odin::WorldViewport::WorldViewport()
  {
  }
  
  odin::WorldViewport::~WorldViewport()
  {
      if (m_viewportTextureView)
      {
          m_viewportTextureView->Release();
          m_viewportTextureView = nullptr;
      }
  }
  
  void odin::WorldViewport::init(ID3D11Device* device)
  {
      ImGuiIO& io = ImGui::GetIO();
      unsigned char* pixels;
      int width, height;
      io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);
  
      D3D11_TEXTURE2D_DESC desc;
      ZeroMemory(&desc, sizeof(desc));
      desc.Width = width;
      desc.Height = height;
      desc.MipLevels = 1;
      desc.ArraySize = 1;
      desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
      desc.SampleDesc.Count = 1;
      desc.Usage = D3D11_USAGE_DEFAULT;
      desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
      desc.CPUAccessFlags = 0;
  
      ID3D11Texture2D* pTexture = NULL;
      D3D11_SUBRESOURCE_DATA subResource;
      subResource.pSysMem = pixels;
      subResource.SysMemPitch = desc.Width * 4;
      subResource.SysMemSlicePitch = 0;
      device->CreateTexture2D(&desc, &subResource, &pTexture);
  
      // Create texture view
      D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
      ZeroMemory(&srvDesc, sizeof(srvDesc));
      srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
      srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
      srvDesc.Texture2D.MipLevels = desc.MipLevels;
      srvDesc.Texture2D.MostDetailedMip = 0;
      device->CreateShaderResourceView(pTexture, &srvDesc, &m_viewportTextureView);
      pTexture->Release();
  }
  