mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	Backends: DX9: Fix to support colored glyphs, using newly introduced 'TexPixelsUseColors' info. (#3369, #3844)
This commit is contained in:
		| @@ -45,6 +45,12 @@ struct CUSTOMVERTEX | |||||||
| }; | }; | ||||||
| #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1) | #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1) | ||||||
|  |  | ||||||
|  | #ifdef IMGUI_USE_BGRA_PACKED_COLOR | ||||||
|  | #define IMGUI_COL_TO_DX9_ARGB(_COL)     (_COL) | ||||||
|  | #else | ||||||
|  | #define IMGUI_COL_TO_DX9_ARGB(_COL)     (((_COL) & 0xFF00FF00) | (((_COL) & 0xFF0000) >> 16) | (((_COL) & 0xFF) << 16)) | ||||||
|  | #endif | ||||||
|  |  | ||||||
| static void ImGui_ImplDX9_SetupRenderState(ImDrawData* draw_data) | static void ImGui_ImplDX9_SetupRenderState(ImDrawData* draw_data) | ||||||
| { | { | ||||||
|     // Setup viewport |     // Setup viewport | ||||||
| @@ -157,11 +163,7 @@ void ImGui_ImplDX9_RenderDrawData(ImDrawData* draw_data) | |||||||
|             vtx_dst->pos[0] = vtx_src->pos.x; |             vtx_dst->pos[0] = vtx_src->pos.x; | ||||||
|             vtx_dst->pos[1] = vtx_src->pos.y; |             vtx_dst->pos[1] = vtx_src->pos.y; | ||||||
|             vtx_dst->pos[2] = 0.0f; |             vtx_dst->pos[2] = 0.0f; | ||||||
| #ifdef IMGUI_USE_BGRA_PACKED_COLOR |             vtx_dst->col = IMGUI_COL_TO_DX9_ARGB(vtx_src->col); | ||||||
|             vtx_dst->col = vtx_src->col; |  | ||||||
| #else |  | ||||||
|             vtx_dst->col = (vtx_src->col & 0xFF00FF00) | ((vtx_src->col & 0xFF0000) >> 16) | ((vtx_src->col & 0xFF) << 16); // RGBA --> ARGB for DirectX9 |  | ||||||
| #endif |  | ||||||
|             vtx_dst->uv[0] = vtx_src->uv.x; |             vtx_dst->uv[0] = vtx_src->uv.x; | ||||||
|             vtx_dst->uv[1] = vtx_src->uv.y; |             vtx_dst->uv[1] = vtx_src->uv.y; | ||||||
|             vtx_dst++; |             vtx_dst++; | ||||||
| @@ -248,6 +250,13 @@ static bool ImGui_ImplDX9_CreateFontsTexture() | |||||||
|     int width, height, bytes_per_pixel; |     int width, height, bytes_per_pixel; | ||||||
|     io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height, &bytes_per_pixel); |     io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height, &bytes_per_pixel); | ||||||
|  |  | ||||||
|  |     // Convert RGBA32 to BGRA32 as the earlier is not well supported by DX9 devices | ||||||
|  | #ifndef IMGUI_USE_BGRA_PACKED_COLOR | ||||||
|  |     if (io.Fonts->TexPixelsUseColors) | ||||||
|  |         for (ImU32* p = (ImU32*)pixels, *p_end = p + width * height; p < p_end; p++) | ||||||
|  |             *p = IMGUI_COL_TO_DX9_ARGB(*p); | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     // Upload texture to graphics system |     // Upload texture to graphics system | ||||||
|     g_FontTexture = NULL; |     g_FontTexture = NULL; | ||||||
|     if (g_pd3dDevice->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &g_FontTexture, NULL) < 0) |     if (g_pd3dDevice->CreateTexture(width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &g_FontTexture, NULL) < 0) | ||||||
|   | |||||||
| @@ -63,6 +63,7 @@ Other Changes: | |||||||
|   accross all backends), facilitating compositing of the output buffer with another buffer. |   accross all backends), facilitating compositing of the output buffer with another buffer. | ||||||
|   (#2693, #2764, #2766, #2873, #3447, #3813, #3816) [@ocornut, @thedmd, @ShawnM427, @Ubpa, @aiekick] |   (#2693, #2764, #2766, #2873, #3447, #3813, #3816) [@ocornut, @thedmd, @ShawnM427, @Ubpa, @aiekick] | ||||||
| - Backends: DX9: Fix to support IMGUI_USE_BGRA_PACKED_COLOR. (#3844) [@Xiliusha] | - Backends: DX9: Fix to support IMGUI_USE_BGRA_PACKED_COLOR. (#3844) [@Xiliusha] | ||||||
|  | - Backends: DX9: Fix to support colored glyphs, using newly introduced 'TexPixelsUseColors' info. (#3844) | ||||||
| - Examples: Reworked setup of clear color to be compatible with transparent values. | - Examples: Reworked setup of clear color to be compatible with transparent values. | ||||||
| - CI: Use a dedicated "scheduled" workflow to trigger scheduled builds. Forks may disable this workflow if | - CI: Use a dedicated "scheduled" workflow to trigger scheduled builds. Forks may disable this workflow if | ||||||
|   scheduled builds builds are not required. [@rokups] |   scheduled builds builds are not required. [@rokups] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user