mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-26 05:27:01 +00:00
Examples: DX12: Enable breaking on any warning/error when debug interface is enabled. (#3462, #3472) + misc comments & minor fixes.
This commit is contained in:
parent
e8447dea45
commit
a8f409a848
@ -73,6 +73,7 @@ Other Changes:
|
|||||||
- Examples: Vulkan: Reworked buffer resize handling, fix for Linux/X11. (#3390, #2626) [@RoryO]
|
- Examples: Vulkan: Reworked buffer resize handling, fix for Linux/X11. (#3390, #2626) [@RoryO]
|
||||||
- Examples: Vulkan: Switch validation layer to use "VK_LAYER_KHRONOS_validation" instead of
|
- Examples: Vulkan: Switch validation layer to use "VK_LAYER_KHRONOS_validation" instead of
|
||||||
"VK_LAYER_LUNARG_standard_validation" which is deprecated (#3459) [@FunMiles]
|
"VK_LAYER_LUNARG_standard_validation" which is deprecated (#3459) [@FunMiles]
|
||||||
|
- Examples: DX12: Enable breaking on any warning/error when debug interface is enabled.
|
||||||
- Examples: DX12: Added '#define ImTextureID ImU64' in project and build files to also allow building
|
- Examples: DX12: Added '#define ImTextureID ImU64' in project and build files to also allow building
|
||||||
on 32-bit systems. Added project to default Visual Studio solution file. (#301)
|
on 32-bit systems. Added project to default Visual Studio solution file. (#301)
|
||||||
|
|
||||||
|
@ -241,19 +241,32 @@ bool CreateDeviceD3D(HWND hWnd)
|
|||||||
sd.Stereo = FALSE;
|
sd.Stereo = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [DEBUG] Enable debug interface
|
||||||
#ifdef DX12_ENABLE_DEBUG_LAYER
|
#ifdef DX12_ENABLE_DEBUG_LAYER
|
||||||
ID3D12Debug* pdx12Debug = NULL;
|
ID3D12Debug* pdx12Debug = NULL;
|
||||||
if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&pdx12Debug))))
|
if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&pdx12Debug))))
|
||||||
{
|
|
||||||
pdx12Debug->EnableDebugLayer();
|
pdx12Debug->EnableDebugLayer();
|
||||||
pdx12Debug->Release();
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Create device
|
||||||
D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0;
|
D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0;
|
||||||
if (D3D12CreateDevice(NULL, featureLevel, IID_PPV_ARGS(&g_pd3dDevice)) != S_OK)
|
if (D3D12CreateDevice(NULL, featureLevel, IID_PPV_ARGS(&g_pd3dDevice)) != S_OK)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// [DEBUG] Setup debug interface to break on any warnings/errors
|
||||||
|
#ifdef DX12_ENABLE_DEBUG_LAYER
|
||||||
|
if (pdx12Debug != NULL)
|
||||||
|
{
|
||||||
|
ID3D12InfoQueue* pInfoQueue = NULL;
|
||||||
|
g_pd3dDevice->QueryInterface(IID_PPV_ARGS(&pInfoQueue));
|
||||||
|
pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_ERROR, true);
|
||||||
|
pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_CORRUPTION, true);
|
||||||
|
pInfoQueue->SetBreakOnSeverity(D3D12_MESSAGE_SEVERITY_WARNING, true);
|
||||||
|
pInfoQueue->Release();
|
||||||
|
pdx12Debug->Release();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
D3D12_DESCRIPTOR_HEAP_DESC desc = {};
|
D3D12_DESCRIPTOR_HEAP_DESC desc = {};
|
||||||
desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
|
desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
|
||||||
|
8
imgui.h
8
imgui.h
@ -887,13 +887,15 @@ enum ImGuiTreeNodeFlags_
|
|||||||
// small flags values as a mouse button index, so we encode the mouse button in the first few bits of the flags.
|
// small flags values as a mouse button index, so we encode the mouse button in the first few bits of the flags.
|
||||||
// It is therefore guaranteed to be legal to pass a mouse button index in ImGuiPopupFlags.
|
// It is therefore guaranteed to be legal to pass a mouse button index in ImGuiPopupFlags.
|
||||||
// - For the same reason, we exceptionally default the ImGuiPopupFlags argument of BeginPopupContextXXX functions to 1 instead of 0.
|
// - For the same reason, we exceptionally default the ImGuiPopupFlags argument of BeginPopupContextXXX functions to 1 instead of 0.
|
||||||
|
// IMPORTANT: because the default parameter is 1 (==ImGuiPopupFlags_MouseButtonRight), if you rely on the default parameter
|
||||||
|
// and want to another another flag, you need to pass in the ImGuiPopupFlags_MouseButtonRight flag.
|
||||||
// - Multiple buttons currently cannot be combined/or-ed in those functions (we could allow it later).
|
// - Multiple buttons currently cannot be combined/or-ed in those functions (we could allow it later).
|
||||||
enum ImGuiPopupFlags_
|
enum ImGuiPopupFlags_
|
||||||
{
|
{
|
||||||
ImGuiPopupFlags_None = 0,
|
ImGuiPopupFlags_None = 0,
|
||||||
ImGuiPopupFlags_MouseButtonLeft = 0, // For BeginPopupContext*(): open on Left Mouse release. Guaranted to always be == 0 (same as ImGuiMouseButton_Left)
|
ImGuiPopupFlags_MouseButtonLeft = 0, // For BeginPopupContext*(): open on Left Mouse release. Guaranteed to always be == 0 (same as ImGuiMouseButton_Left)
|
||||||
ImGuiPopupFlags_MouseButtonRight = 1, // For BeginPopupContext*(): open on Right Mouse release. Guaranted to always be == 1 (same as ImGuiMouseButton_Right)
|
ImGuiPopupFlags_MouseButtonRight = 1, // For BeginPopupContext*(): open on Right Mouse release. Guaranteed to always be == 1 (same as ImGuiMouseButton_Right)
|
||||||
ImGuiPopupFlags_MouseButtonMiddle = 2, // For BeginPopupContext*(): open on Middle Mouse release. Guaranted to always be == 2 (same as ImGuiMouseButton_Middle)
|
ImGuiPopupFlags_MouseButtonMiddle = 2, // For BeginPopupContext*(): open on Middle Mouse release. Guaranteed to always be == 2 (same as ImGuiMouseButton_Middle)
|
||||||
ImGuiPopupFlags_MouseButtonMask_ = 0x1F,
|
ImGuiPopupFlags_MouseButtonMask_ = 0x1F,
|
||||||
ImGuiPopupFlags_MouseButtonDefault_ = 1,
|
ImGuiPopupFlags_MouseButtonDefault_ = 1,
|
||||||
ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5, // For OpenPopup*(), BeginPopupContext*(): don't open if there's already a popup at the same level of the popup stack
|
ImGuiPopupFlags_NoOpenOverExistingPopup = 1 << 5, // For OpenPopup*(), BeginPopupContext*(): don't open if there's already a popup at the same level of the popup stack
|
||||||
|
@ -854,7 +854,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + wrap_width);
|
ImGui::PushTextWrapPos(ImGui::GetCursorPos().x + wrap_width);
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
ImGui::Text("The lazy dog is a good dog. This paragraph should fit within %.0f pixels. Testing a 1 character word. The quick brown fox jumps over the lazy dog.", wrap_width);
|
ImGui::Text("The lazy dog is a good dog. This paragraph should fit within %.0f pixels. Testing a 1 character word. The quick brown fox jumps over the lazy dog.", wrap_width);
|
||||||
if (n == 1)
|
else
|
||||||
ImGui::Text("aaaaaaaa bbbbbbbb, c cccccccc,dddddddd. d eeeeeeee ffffffff. gggggggg!hhhhhhhh");
|
ImGui::Text("aaaaaaaa bbbbbbbb, c cccccccc,dddddddd. d eeeeeeee ffffffff. gggggggg!hhhhhhhh");
|
||||||
|
|
||||||
// Draw actual text bounding box, following by marker of our expected limit (should not overlap!)
|
// Draw actual text bounding box, following by marker of our expected limit (should not overlap!)
|
||||||
@ -953,7 +953,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
int frame_padding = -1 + i; // -1 == uses default padding (style.FramePadding)
|
int frame_padding = -1 + i; // -1 == uses default padding (style.FramePadding)
|
||||||
ImVec2 size = ImVec2(32.0f, 32.0f); // Size of the image we want to make visible
|
ImVec2 size = ImVec2(32.0f, 32.0f); // Size of the image we want to make visible
|
||||||
ImVec2 uv0 = ImVec2(0.0f, 0.0f); // UV coordinates for lower-left
|
ImVec2 uv0 = ImVec2(0.0f, 0.0f); // UV coordinates for lower-left
|
||||||
ImVec2 uv1 = ImVec2(32.0f / my_tex_w, 32 / my_tex_h); // UV coordinates for (32,32) in our texture
|
ImVec2 uv1 = ImVec2(32.0f / my_tex_w, 32.0f / my_tex_h);// UV coordinates for (32,32) in our texture
|
||||||
ImVec4 bg_col = ImVec4(0.0f, 0.0f, 0.0f, 1.0f); // Black background
|
ImVec4 bg_col = ImVec4(0.0f, 0.0f, 0.0f, 1.0f); // Black background
|
||||||
ImVec4 tint_col = ImVec4(1.0f, 1.0f, 1.0f, 1.0f); // No tint
|
ImVec4 tint_col = ImVec4(1.0f, 1.0f, 1.0f, 1.0f); // No tint
|
||||||
if (ImGui::ImageButton(my_tex_id, size, uv0, uv1, frame_padding, bg_col, tint_col))
|
if (ImGui::ImageButton(my_tex_id, size, uv0, uv1, frame_padding, bg_col, tint_col))
|
||||||
@ -982,7 +982,7 @@ static void ShowDemoWindowWidgets()
|
|||||||
// stored in the object itself, etc.)
|
// stored in the object itself, etc.)
|
||||||
const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLLLLL", "MMMM", "OOOOOOO" };
|
const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIII", "JJJJ", "KKKK", "LLLLLLL", "MMMM", "OOOOOOO" };
|
||||||
static int item_current_idx = 0; // Here our selection data is an index.
|
static int item_current_idx = 0; // Here our selection data is an index.
|
||||||
const char* combo_label = items[item_current_idx]; // Label to preview before opening the combo (technically could be anything)(
|
const char* combo_label = items[item_current_idx]; // Label to preview before opening the combo (technically it could be anything)
|
||||||
if (ImGui::BeginCombo("combo 1", combo_label, flags))
|
if (ImGui::BeginCombo("combo 1", combo_label, flags))
|
||||||
{
|
{
|
||||||
for (int n = 0; n < IM_ARRAYSIZE(items); n++)
|
for (int n = 0; n < IM_ARRAYSIZE(items); n++)
|
||||||
@ -4939,16 +4939,15 @@ static void ShowExampleAppSimpleOverlay(bool* p_open)
|
|||||||
const float DISTANCE = 10.0f;
|
const float DISTANCE = 10.0f;
|
||||||
static int corner = 0;
|
static int corner = 0;
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
|
ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav;
|
||||||
if (corner != -1)
|
if (corner != -1)
|
||||||
{
|
{
|
||||||
|
window_flags |= ImGuiWindowFlags_NoMove;
|
||||||
ImVec2 window_pos = ImVec2((corner & 1) ? io.DisplaySize.x - DISTANCE : DISTANCE, (corner & 2) ? io.DisplaySize.y - DISTANCE : DISTANCE);
|
ImVec2 window_pos = ImVec2((corner & 1) ? io.DisplaySize.x - DISTANCE : DISTANCE, (corner & 2) ? io.DisplaySize.y - DISTANCE : DISTANCE);
|
||||||
ImVec2 window_pos_pivot = ImVec2((corner & 1) ? 1.0f : 0.0f, (corner & 2) ? 1.0f : 0.0f);
|
ImVec2 window_pos_pivot = ImVec2((corner & 1) ? 1.0f : 0.0f, (corner & 2) ? 1.0f : 0.0f);
|
||||||
ImGui::SetNextWindowPos(window_pos, ImGuiCond_Always, window_pos_pivot);
|
ImGui::SetNextWindowPos(window_pos, ImGuiCond_Always, window_pos_pivot);
|
||||||
}
|
}
|
||||||
ImGui::SetNextWindowBgAlpha(0.35f); // Transparent background
|
ImGui::SetNextWindowBgAlpha(0.35f); // Transparent background
|
||||||
ImGuiWindowFlags window_flags = ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav;
|
|
||||||
if (corner != -1)
|
|
||||||
window_flags |= ImGuiWindowFlags_NoMove;
|
|
||||||
if (ImGui::Begin("Example: Simple overlay", p_open, window_flags))
|
if (ImGui::Begin("Example: Simple overlay", p_open, window_flags))
|
||||||
{
|
{
|
||||||
ImGui::Text("Simple overlay\n" "in the corner of the screen.\n" "(right-click to change position)");
|
ImGui::Text("Simple overlay\n" "in the corner of the screen.\n" "(right-click to change position)");
|
||||||
|
@ -339,7 +339,7 @@ void ImGui::StyleColorsLight(ImGuiStyle* dst)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// ImDrawList
|
// [SECTION] ImDrawList
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
ImDrawListSharedData::ImDrawListSharedData()
|
ImDrawListSharedData::ImDrawListSharedData()
|
||||||
@ -1405,7 +1405,7 @@ void ImDrawList::AddImageRounded(ImTextureID user_texture_id, const ImVec2& p_mi
|
|||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// ImDrawListSplitter
|
// [SECTION] ImDrawListSplitter
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// FIXME: This may be a little confusing, trying to be a little too low-level/optimal instead of just doing vector swap..
|
// FIXME: This may be a little confusing, trying to be a little too low-level/optimal instead of just doing vector swap..
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user