1.首先需要使用imgui的依赖

image.png
2.头文件引用
#include "imgui/imgui_impl_glfw.h"
#include "imgui/imgui_impl_opengl3.h"
3.此时运行代码会报错
因为还需要 GLFW 的库
官方下载地址:
Download | GLFW
这里以我的系统 为例 :windows 64位
image.png
下载完成之后解压的目录
image.png
4.引入GLFW库
找到刚刚下载的库解压:
1.添加附加包含目录
GLFW路径\include
image.png2.添加lib,使用和自己编译同样版本的lib,我是vc2022
image.png3.链接到这个库
#pragma comment (lib, "glfw3.lib")image.png
5.使用stb 这个库加载图片
1.库地址:
GitHub | stb库
2.我们只需要stb_image.h
3.将stb_image.h添加到我们的项目中
image.png
4.加上头文件#define STB_IMAGE_IMPLEMENTATION //必须加上 #include "stb_image.h"image.png
以上准备阶段就ok,开始代码阶段
1.ImGui 是通过纹理来加载图片的所以我们实现一个从图片文件加载到纹理
// 从文件加载纹理
bool LoadTextureFromFile(const char* filename, ID3D11ShaderResourceView** out_srv)
{
int width, height, channels;
unsigned char* pixels = stbi_load(filename, &width, &height, &channels, STBI_rgb_alpha);
if (!pixels)
return false;
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.SampleDesc.Quality = 0;
desc.Usage = D3D11_USAGE_DEFAULT;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = 0;
D3D11_SUBRESOURCE_DATA subResource;
ZeroMemory(&subResource, sizeof(subResource));
subResource.pSysMem = pixels;
subResource.SysMemPitch = width * 4;
ID3D11Texture2D* pTexture = nullptr;
if (g_pd3dDevice->CreateTexture2D(&desc, &subResource, &pTexture) != S_OK)
{
stbi_image_free(pixels);
return false;
}
// Create texture view
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
ZeroMemory(&srvDesc, sizeof(srvDesc));
srvDesc.Format = desc.Format;
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvDesc.Texture2D.MipLevels = desc.MipLevels;
srvDesc.Texture2D.MostDetailedMip = 0;
if (g_pd3dDevice->CreateShaderResourceView(pTexture, &srvDesc, out_srv) != S_OK)
{
pTexture->Release();
stbi_image_free(pixels);
return false;
}
pTexture->Release();
stbi_image_free(pixels);
return true;
}
2.在ImGui 初始化完成之后
// 加载图片 ID3D11ShaderResourceView* textureSRV = nullptr; if (!LoadTextureFromFile("E:\\summer\\图片\\gh_89b7666ea8b7_258.jpg", &textureSRV)) { // 加载失败 return 1; }image.png
3.ImGui渲染函数中
{ ImGui::Begin(u8"夏休助手"); ImGui::Text(u8"程序平均帧率 %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); ImGui::Text(u8"文本测试"); // 图片显示 ImGui::Image(textureSRV, ImVec2(200, 200)); ImGui::End(); }4.运行效果
image.png








