mirror of
https://gitlab.com/Mr_Goldberg/goldberg_emulator.git
synced 2025-12-05 11:44:53 +01:00
Update ImGui
This commit is contained in:
parent
294c8e8124
commit
d6bdde0123
30 changed files with 11478 additions and 9841 deletions
|
|
@ -2,8 +2,8 @@
|
|||
// This needs to be used along with a Platform Binding (e.g. Win32)
|
||||
|
||||
// Implemented features:
|
||||
// [X] Renderer: User texture binding. Use 'ID3D11ShaderResourceView*' as ImTextureID. Read the FAQ about ImTextureID in imgui.cpp.
|
||||
// [X] Renderer: Support for large meshes (64k+ vertices) with 16-bits indices.
|
||||
// [X] Renderer: User texture binding. Use 'ID3D11ShaderResourceView*' as ImTextureID. Read the FAQ about ImTextureID!
|
||||
// [X] Renderer: Support for large meshes (64k+ vertices) with 16-bit indices.
|
||||
|
||||
// You can copy and use unmodified imgui_impl_* files in your project. See main.cpp for an example of using this.
|
||||
// If you are new to dear imgui, read examples/README.txt and read the documentation at the top of imgui.cpp
|
||||
|
|
@ -11,6 +11,8 @@
|
|||
|
||||
// CHANGELOG
|
||||
// (minor and older changes stripped away, please see git history for details)
|
||||
// 2019-08-01: DirectX11: Fixed code querying the Geometry Shader state (would generally error with Debug layer enabled).
|
||||
// 2019-07-21: DirectX11: Backup, clear and restore Geometry Shader is any is bound when calling ImGui_ImplDX10_RenderDrawData. Clearing Hull/Domain/Compute shaders without backup/restore.
|
||||
// 2019-05-29: DirectX11: Added support for large mesh (64K+ vertices), enable ImGuiBackendFlags_RendererHasVtxOffset flag.
|
||||
// 2019-04-30: DirectX11: Added support for special ImDrawCallback_ResetRenderState callback to reset render state.
|
||||
// 2018-12-03: Misc: Added #pragma comment statement to automatically link with d3dcompiler.lib when using D3DCompile().
|
||||
|
|
@ -30,12 +32,7 @@
|
|||
#include <stdio.h>
|
||||
#include <d3d11.h>
|
||||
|
||||
#include "../../../overlay_experimental/windows/ImGui_ShaderBlobs.h"
|
||||
|
||||
#ifdef USE_D3DCOMPILE
|
||||
static ID3DBlob* g_pVertexShaderBlob = NULL;
|
||||
static ID3DBlob* g_pPixelShaderBlob = NULL;
|
||||
#endif
|
||||
#include "imgui_shaderblobs.h"
|
||||
|
||||
// DirectX data
|
||||
static ID3D11Device* g_pd3dDevice = NULL;
|
||||
|
|
@ -82,6 +79,10 @@ static void ImGui_ImplDX11_SetupRenderState(ImDrawData* draw_data, ID3D11DeviceC
|
|||
ctx->VSSetConstantBuffers(0, 1, &g_pVertexConstantBuffer);
|
||||
ctx->PSSetShader(g_pPixelShader, NULL, 0);
|
||||
ctx->PSSetSamplers(0, 1, &g_pFontSampler);
|
||||
ctx->GSSetShader(NULL, NULL, 0);
|
||||
ctx->HSSetShader(NULL, NULL, 0); // In theory we should backup and restore this as well.. very infrequently used..
|
||||
ctx->DSSetShader(NULL, NULL, 0); // In theory we should backup and restore this as well.. very infrequently used..
|
||||
ctx->CSSetShader(NULL, NULL, 0); // In theory we should backup and restore this as well.. very infrequently used..
|
||||
|
||||
// Setup blend state
|
||||
const float blend_factor[4] = { 0.f, 0.f, 0.f, 0.f };
|
||||
|
|
@ -186,8 +187,9 @@ void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data)
|
|||
ID3D11SamplerState* PSSampler;
|
||||
ID3D11PixelShader* PS;
|
||||
ID3D11VertexShader* VS;
|
||||
UINT PSInstancesCount, VSInstancesCount;
|
||||
ID3D11ClassInstance* PSInstances[256], *VSInstances[256]; // 256 is max according to PSSetShader documentation
|
||||
ID3D11GeometryShader* GS;
|
||||
UINT PSInstancesCount, VSInstancesCount, GSInstancesCount;
|
||||
ID3D11ClassInstance *PSInstances[256], *VSInstances[256], *GSInstances[256]; // 256 is max according to PSSetShader documentation
|
||||
D3D11_PRIMITIVE_TOPOLOGY PrimitiveTopology;
|
||||
ID3D11Buffer* IndexBuffer, *VertexBuffer, *VSConstantBuffer;
|
||||
UINT IndexBufferOffset, VertexBufferStride, VertexBufferOffset;
|
||||
|
|
@ -203,10 +205,12 @@ void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data)
|
|||
ctx->OMGetDepthStencilState(&old.DepthStencilState, &old.StencilRef);
|
||||
ctx->PSGetShaderResources(0, 1, &old.PSShaderResource);
|
||||
ctx->PSGetSamplers(0, 1, &old.PSSampler);
|
||||
old.PSInstancesCount = old.VSInstancesCount = 256;
|
||||
old.PSInstancesCount = old.VSInstancesCount = old.GSInstancesCount = 256;
|
||||
ctx->PSGetShader(&old.PS, old.PSInstances, &old.PSInstancesCount);
|
||||
ctx->VSGetShader(&old.VS, old.VSInstances, &old.VSInstancesCount);
|
||||
ctx->VSGetConstantBuffers(0, 1, &old.VSConstantBuffer);
|
||||
ctx->GSGetShader(&old.GS, old.GSInstances, &old.GSInstancesCount);
|
||||
|
||||
ctx->IAGetPrimitiveTopology(&old.PrimitiveTopology);
|
||||
ctx->IAGetIndexBuffer(&old.IndexBuffer, &old.IndexBufferFormat, &old.IndexBufferOffset);
|
||||
ctx->IAGetVertexBuffers(0, 1, &old.VertexBuffer, &old.VertexBufferStride, &old.VertexBufferOffset);
|
||||
|
|
@ -263,6 +267,7 @@ void ImGui_ImplDX11_RenderDrawData(ImDrawData* draw_data)
|
|||
for (UINT i = 0; i < old.PSInstancesCount; i++) if (old.PSInstances[i]) old.PSInstances[i]->Release();
|
||||
ctx->VSSetShader(old.VS, old.VSInstances, old.VSInstancesCount); if (old.VS) old.VS->Release();
|
||||
ctx->VSSetConstantBuffers(0, 1, &old.VSConstantBuffer); if (old.VSConstantBuffer) old.VSConstantBuffer->Release();
|
||||
ctx->GSSetShader(old.GS, old.GSInstances, old.GSInstancesCount); if (old.GS) old.GS->Release();
|
||||
for (UINT i = 0; i < old.VSInstancesCount; i++) if (old.VSInstances[i]) old.VSInstances[i]->Release();
|
||||
ctx->IASetPrimitiveTopology(old.PrimitiveTopology);
|
||||
ctx->IASetIndexBuffer(old.IndexBuffer, old.IndexBufferFormat, old.IndexBufferOffset); if (old.IndexBuffer) old.IndexBuffer->Release();
|
||||
|
|
@ -292,7 +297,7 @@ static void ImGui_ImplDX11_CreateFontsTexture()
|
|||
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
|
||||
desc.CPUAccessFlags = 0;
|
||||
|
||||
ID3D11Texture2D *pTexture = NULL;
|
||||
ID3D11Texture2D* pTexture = NULL;
|
||||
D3D11_SUBRESOURCE_DATA subResource;
|
||||
subResource.pSysMem = pixels;
|
||||
subResource.SysMemPitch = desc.Width * 4;
|
||||
|
|
@ -342,128 +347,77 @@ bool ImGui_ImplDX11_CreateDeviceObjects()
|
|||
// 2) use code to detect any version of the DLL and grab a pointer to D3DCompile from the DLL.
|
||||
// See https://github.com/ocornut/imgui/pull/638 for sources and details.
|
||||
|
||||
#ifdef USE_D3DCOMPILE
|
||||
decltype(D3DCompile)* D3DCompile = load_d3dcompile();
|
||||
if (D3DCompile == nullptr)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
// Create the vertex shader
|
||||
{
|
||||
#ifdef USE_D3DCOMPILE
|
||||
static const char* vertexShader =
|
||||
"cbuffer vertexBuffer : register(b0) \
|
||||
{\
|
||||
float4x4 ProjectionMatrix; \
|
||||
};\
|
||||
struct VS_INPUT\
|
||||
{\
|
||||
float2 pos : POSITION;\
|
||||
float4 col : COLOR0;\
|
||||
float2 uv : TEXCOORD0;\
|
||||
};\
|
||||
\
|
||||
struct PS_INPUT\
|
||||
{\
|
||||
float4 pos : SV_POSITION;\
|
||||
float4 col : COLOR0;\
|
||||
float2 uv : TEXCOORD0;\
|
||||
};\
|
||||
\
|
||||
PS_INPUT main(VS_INPUT input)\
|
||||
{\
|
||||
PS_INPUT output;\
|
||||
output.pos = mul( ProjectionMatrix, float4(input.pos.xy, 0.f, 1.f));\
|
||||
output.col = input.col;\
|
||||
output.uv = input.uv;\
|
||||
return output;\
|
||||
}";
|
||||
|
||||
const char* target;
|
||||
switch (g_pd3dDevice->GetFeatureLevel())
|
||||
{
|
||||
case D3D_FEATURE_LEVEL_9_1: target = "vs_4_0_level_9_1"; break;
|
||||
case D3D_FEATURE_LEVEL_9_2: target = "vs_4_0_level_9_2"; break;
|
||||
case D3D_FEATURE_LEVEL_9_3: target = "vs_4_0_level_9_3"; break;
|
||||
case D3D_FEATURE_LEVEL_10_0: target = "vs_4_0"; break;
|
||||
case D3D_FEATURE_LEVEL_10_1: target = "vs_4_1"; break;
|
||||
case D3D_FEATURE_LEVEL_11_0: target = "vs_5_0"; break;
|
||||
case D3D_FEATURE_LEVEL_11_1: target = "vs_5_0"; break;
|
||||
default: target = "vs_4_0";
|
||||
}
|
||||
|
||||
D3DCompile(vertexShader, strlen(vertexShader), NULL, NULL, NULL, "main", target, 0, 0, &g_pVertexShaderBlob, NULL);
|
||||
|
||||
if (g_pVertexShaderBlob == NULL) // NB: Pass ID3D10Blob* pErrorBlob to D3DCompile() to get error showing in (const char*)pErrorBlob->GetBufferPointer(). Make sure to Release() the blob!
|
||||
return false;
|
||||
if (g_pd3dDevice->CreateVertexShader((DWORD*)g_pVertexShaderBlob->GetBufferPointer(), g_pVertexShaderBlob->GetBufferSize(), NULL, &g_pVertexShader) != S_OK)
|
||||
return false;
|
||||
#else
|
||||
|
||||
unsigned char* byteCode;
|
||||
SIZE_T byteCodeSize;
|
||||
|
||||
switch (g_pd3dDevice->GetFeatureLevel())
|
||||
{
|
||||
case D3D_FEATURE_LEVEL_9_1:
|
||||
byteCode = ImGui_vertexShaderDX11_9_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_9_1_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_9_1:
|
||||
byteCode = ImGui_vertexShaderDX11_9_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_9_1_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_9_2:
|
||||
byteCode = ImGui_vertexShaderDX11_9_2;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_9_2_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_9_2:
|
||||
byteCode = ImGui_vertexShaderDX11_9_2;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_9_2_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_9_3:
|
||||
byteCode = ImGui_vertexShaderDX11_9_3;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_9_3_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_9_3:
|
||||
byteCode = ImGui_vertexShaderDX11_9_3;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_9_3_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_10_0:
|
||||
byteCode = ImGui_vertexShaderDX11_10_0;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_10_0_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_10_0:
|
||||
byteCode = ImGui_vertexShaderDX11_10_0;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_10_0_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_10_1:
|
||||
byteCode = ImGui_vertexShaderDX11_10_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_10_1_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_10_1:
|
||||
byteCode = ImGui_vertexShaderDX11_10_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_10_1_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_11_0:
|
||||
byteCode = ImGui_vertexShaderDX11_11_0;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_11_0_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_11_0:
|
||||
byteCode = ImGui_vertexShaderDX11_11_0;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_11_0_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_11_1:
|
||||
byteCode = ImGui_vertexShaderDX11_11_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_11_1_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_11_1:
|
||||
byteCode = ImGui_vertexShaderDX11_11_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_11_1_len;
|
||||
break;
|
||||
|
||||
default:
|
||||
byteCode = ImGui_vertexShaderDX11;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_len;
|
||||
case D3D_FEATURE_LEVEL_12_0:
|
||||
byteCode = ImGui_vertexShaderDX11_12_0;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_12_0_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_12_1:
|
||||
byteCode = ImGui_vertexShaderDX11_12_1;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_12_1_len;
|
||||
break;
|
||||
|
||||
default:
|
||||
byteCode = ImGui_vertexShaderDX11;
|
||||
byteCodeSize = ImGui_vertexShaderDX11_len;
|
||||
}
|
||||
|
||||
auto x = g_pd3dDevice->CreateVertexShader(byteCode, byteCodeSize, NULL, &g_pVertexShader);
|
||||
if (x != S_OK)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
// Create the input layout
|
||||
D3D11_INPUT_ELEMENT_DESC local_layout[] =
|
||||
{
|
||||
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, (UINT)(&((ImDrawVert*)0)->pos), D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, (UINT)(&((ImDrawVert*)0)->uv), D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
{ "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, (UINT)(&((ImDrawVert*)0)->col), D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, (UINT)IM_OFFSETOF(ImDrawVert, pos), D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, (UINT)IM_OFFSETOF(ImDrawVert, uv), D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
{ "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, (UINT)IM_OFFSETOF(ImDrawVert, col), D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||
};
|
||||
#ifdef USE_D3DCOMPILE
|
||||
if (g_pd3dDevice->CreateInputLayout(local_layout, 3, g_pVertexShaderBlob->GetBufferPointer(), g_pVertexShaderBlob->GetBufferSize(), &g_pInputLayout) != S_OK)
|
||||
return false;
|
||||
#else
|
||||
|
||||
if (g_pd3dDevice->CreateInputLayout(local_layout, 3, ImGui_vertexShaderDX11, ImGui_vertexShaderDX11_len, &g_pInputLayout) != S_OK)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
// Create the constant buffer
|
||||
{
|
||||
|
|
@ -479,97 +433,67 @@ bool ImGui_ImplDX11_CreateDeviceObjects()
|
|||
|
||||
// Create the pixel shader
|
||||
{
|
||||
#ifdef USE_D3DCOMPILE
|
||||
static const char* pixelShader =
|
||||
"struct PS_INPUT\
|
||||
{\
|
||||
float4 pos : SV_POSITION;\
|
||||
float4 col : COLOR0;\
|
||||
float2 uv : TEXCOORD0;\
|
||||
};\
|
||||
sampler sampler0;\
|
||||
Texture2D texture0;\
|
||||
\
|
||||
float4 main(PS_INPUT input) : SV_Target\
|
||||
{\
|
||||
float4 out_col = input.col * texture0.Sample(sampler0, input.uv); \
|
||||
return out_col; \
|
||||
}";
|
||||
|
||||
const char* target;
|
||||
switch (g_pd3dDevice->GetFeatureLevel())
|
||||
{
|
||||
case D3D_FEATURE_LEVEL_9_1: target = "ps_4_0_level_9_1"; break;
|
||||
case D3D_FEATURE_LEVEL_9_2: target = "ps_4_0_level_9_2"; break;
|
||||
case D3D_FEATURE_LEVEL_9_3: target = "ps_4_0_level_9_3"; break;
|
||||
case D3D_FEATURE_LEVEL_10_0: target = "ps_4_0"; break;
|
||||
case D3D_FEATURE_LEVEL_10_1: target = "ps_4_1"; break;
|
||||
case D3D_FEATURE_LEVEL_11_0: target = "ps_5_0"; break;
|
||||
case D3D_FEATURE_LEVEL_11_1: target = "ps_5_0"; break;
|
||||
default: target = "ps_4_0";
|
||||
}
|
||||
|
||||
D3DCompile(pixelShader, strlen(pixelShader), NULL, NULL, NULL, "main", target, 0, 0, &g_pPixelShaderBlob, NULL);
|
||||
if (g_pPixelShaderBlob == NULL) // NB: Pass ID3D10Blob* pErrorBlob to D3DCompile() to get error showing in (const char*)pErrorBlob->GetBufferPointer(). Make sure to Release() the blob!
|
||||
return false;
|
||||
if (g_pd3dDevice->CreatePixelShader((DWORD*)g_pPixelShaderBlob->GetBufferPointer(), g_pPixelShaderBlob->GetBufferSize(), NULL, &g_pPixelShader) != S_OK)
|
||||
return false;
|
||||
#else
|
||||
|
||||
unsigned char* byteCode;
|
||||
SIZE_T byteCodeSize;
|
||||
|
||||
switch (g_pd3dDevice->GetFeatureLevel())
|
||||
{
|
||||
case D3D_FEATURE_LEVEL_9_1:
|
||||
byteCode = ImGui_pixelShaderDX11_9_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_9_1_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_9_1:
|
||||
byteCode = ImGui_pixelShaderDX11_9_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_9_1_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_9_2:
|
||||
byteCode = ImGui_pixelShaderDX11_9_2;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_9_2_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_9_2:
|
||||
byteCode = ImGui_pixelShaderDX11_9_2;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_9_2_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_9_3:
|
||||
byteCode = ImGui_pixelShaderDX11_9_3;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_9_3_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_9_3:
|
||||
byteCode = ImGui_pixelShaderDX11_9_3;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_9_3_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_10_0:
|
||||
byteCode = ImGui_pixelShaderDX11_10_0;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_10_0_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_10_0:
|
||||
byteCode = ImGui_pixelShaderDX11_10_0;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_10_0_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_10_1:
|
||||
byteCode = ImGui_pixelShaderDX11_10_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_10_1_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_10_1:
|
||||
byteCode = ImGui_pixelShaderDX11_10_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_10_1_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_11_0:
|
||||
byteCode = ImGui_pixelShaderDX11_11_0;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_11_0_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_11_0:
|
||||
byteCode = ImGui_pixelShaderDX11_11_0;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_11_0_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_11_1:
|
||||
byteCode = ImGui_pixelShaderDX11_11_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_11_1_len;
|
||||
break;
|
||||
case D3D_FEATURE_LEVEL_11_1:
|
||||
byteCode = ImGui_pixelShaderDX11_11_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_11_1_len;
|
||||
break;
|
||||
|
||||
default:
|
||||
byteCode = ImGui_pixelShaderDX11;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_len;
|
||||
case D3D_FEATURE_LEVEL_12_0:
|
||||
byteCode = ImGui_pixelShaderDX11_12_0;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_12_0_len;
|
||||
break;
|
||||
|
||||
case D3D_FEATURE_LEVEL_12_1:
|
||||
byteCode = ImGui_pixelShaderDX11_12_1;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_12_1_len;
|
||||
break;
|
||||
|
||||
default:
|
||||
byteCode = ImGui_pixelShaderDX11;
|
||||
byteCodeSize = ImGui_pixelShaderDX11_len;
|
||||
}
|
||||
|
||||
if (g_pd3dDevice->CreatePixelShader(byteCode, byteCodeSize, NULL, &g_pPixelShader) != S_OK)
|
||||
{
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_D3DCOMPILE
|
||||
unload_d3dcompile();
|
||||
#endif
|
||||
|
||||
// Create the blending setup
|
||||
{
|
||||
D3D11_BLEND_DESC desc;
|
||||
|
|
@ -633,10 +557,6 @@ void ImGui_ImplDX11_InvalidateDeviceObjects()
|
|||
if (g_pVertexConstantBuffer) { g_pVertexConstantBuffer->Release(); g_pVertexConstantBuffer = NULL; }
|
||||
if (g_pInputLayout) { g_pInputLayout->Release(); g_pInputLayout = NULL; }
|
||||
if (g_pVertexShader) { g_pVertexShader->Release(); g_pVertexShader = NULL; }
|
||||
#ifdef USE_D3DCOMPILE
|
||||
if (g_pPixelShaderBlob) { g_pPixelShaderBlob->Release(); g_pPixelShaderBlob = NULL; }
|
||||
if (g_pVertexShaderBlob) { g_pVertexShaderBlob->Release(); g_pVertexShaderBlob = NULL; }
|
||||
#endif
|
||||
}
|
||||
|
||||
bool ImGui_ImplDX11_Init(ID3D11Device* device, ID3D11DeviceContext* device_context)
|
||||
|
|
@ -675,10 +595,8 @@ void ImGui_ImplDX11_Shutdown()
|
|||
if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; }
|
||||
}
|
||||
|
||||
bool ImGui_ImplDX11_NewFrame()
|
||||
void ImGui_ImplDX11_NewFrame()
|
||||
{
|
||||
if (!g_pFontSampler)
|
||||
return ImGui_ImplDX11_CreateDeviceObjects();
|
||||
|
||||
return true;
|
||||
ImGui_ImplDX11_CreateDeviceObjects();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue