IMGUI_DX11显示自定义图片
IMGUI官方自带的例子里有一个Widgets项,里面有个Images
由于官方只演示了字体默认图片,并没有演示如何加载自定义图片
我们先搜索一下这个Images关键词
通过代码搜索,观察发现,这个纹理ID是画图的关键
ImTextureID my_tex_id = io.Fonts->TexID;
我们搜索看看io.Fonts->TexID是什么时候被赋值的(以下是Direct11的IMGUI)
观察得到流程为CreateTexture2D->CreateShaderResourceView->TexID
根据D3D11的相关知识,可以知道先创建一个2D纹理得到ID3D11Texture2D句柄,再通过CreateShaderResourceView得到ID3D11ShaderResourceView* g_pFontTextureView
即为纹理ID。
只要模拟这个过程就可以得到纹理ID:
ID3D11ShaderResourceView* DX11LoadTextureImageFromFile(ID3D11Device *pD3dDevice, wchar_t* lpszFilePath)
{ID3D11Texture2D * pTexture2D = NULL;D3D11_TEXTURE2D_DESC dec;HRESULT result;D3DX11_IMAGE_LOAD_INFO loadInfo;ZeroMemory(&loadInfo, sizeof(D3DX11_IMAGE_LOAD_INFO));loadInfo.BindFlags = D3D11_BIND_SHADER_RESOURCE;loadInfo.Format = DXGI_FORMAT_R8G8B8A8_UNORM;loadInfo.MipLevels = D3DX11_DEFAULT; //这时会产生最大的mipmaps层。 loadInfo.MipFilter = D3DX11_FILTER_LINEAR;result = D3DX11CreateTextureFromFile(pD3dDevice, lpszFilePath, &loadInfo, NULL, (ID3D11Resource**)(&pTexture2D), NULL);pTexture2D->GetDesc(&dec);if (result != S_OK){return NULL;}ID3D11ShaderResourceView*pFontTextureView = NULL;// Create texture viewD3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;ZeroMemory(&srvDesc, sizeof(srvDesc));srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;srvDesc.Texture2D.MipLevels = dec.MipLevels;srvDesc.Texture2D.MostDetailedMip = 0;pD3dDevice->CreateShaderResourceView(pTexture2D, &srvDesc, &pFontTextureView);return pFontTextureView;
}
调用例子:
if (ImGui::Begin(u8"IMGUI", false, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize)){if (!m_pImageTextureView1){m_pImageTextureView1 = DX11LoadTextureImageFromFile(GetD3dDevice(), (wchar_t*)L"D:\\1.jpg");}ImTextureID my_tex_id = m_pImageTextureView1;float my_tex_w = (float)300;float my_tex_h = (float)400;ImGui::Image(my_tex_id, ImVec2(my_tex_w, my_tex_h), ImVec2(0, 0), ImVec2(1, 1), ImVec4(1.0f, 1.0f, 1.0f, 1.0f), ImVec4(1.0f, 1.0f, 1.0f, 0.5f));}
D3D9同理
IMGUI_DX11显示自定义图片相关推荐
- 03-UITableView索引栏显示自定义图片
如果对iOS开发感兴趣,可以来黑马程序员学习iOS:黑马程序员 1.1-系统API有没有提供相关的属性或者代理呢? 1.2-自定义View作为索引栏 1.3-使用NSString显示图片原理 1.3. ...
- vue 图片不存在时 显示自定义图片
遇见的问题: 当请求的图片为空时,默认图片,路径是对的,但是就是不出来 建议放在store里面,因为使用的自定义图片的地方可能有多处: 第一种:多个页面需要使用时 //这里我是直接放在store里面的 ...
- HTML中视频默认显示自定义图片
用特定的图片给视频做封面 方法一 在HTML代码中直接添加poster属性 代码如下: //html代码,需要在video标签中加入poster属性,把封面图的路径加上 <video id=&q ...
- Android 图片黑白显示 自定义饱和度
Android 自定义显示黑白色图片 1.先下载下来需要显示的图片(或头像) 我模拟下,将图片放到assert文件夹下,拿到他的InputStream.代码如下: 1 InputStream in = ...
- qaxwidget传递参数到html,记一次QT使用QAxWidget打开.html文件调用显示离线百度地图不能缩放,自定义图片不能显示解决方法...
主要问题: 一开始用的是在线的,都没有什么问题,自定义图片均可以显示,可是后面试了一下离线百度地图,在qt中运行打开.html文件和在电脑上面直接双击打开此文件显示是有差别的,在qt生成的程序中,地图 ...
- 显示自定义表情图片(replace将文字表情替换为图片)
显示自定义表情图片(replace将文字表情替换为图片) <div id="moment"></div>var face = { '[哎呀]': '< ...
- vue图片img加载失败显示自定义默认图片(缺省图)
vue图片img加载失败显示自定义默认图片(缺省图) 1.图片加载示例 2.加载失败显示默认图片 3.加载失败默认图片代码处理 <div class="book-img" ...
- 《前端》echarts排行榜,类目名字在柱子上方全部显示,前三名序号使用自定义图片背景--什么鬼待处理
echarts排行榜,类目名字在柱子上方全部显示,前三名序号使用自定义图片背景https://blog.csdn.net/orangeverity/article/details/107160849 ...
- android 自定义Gifview显示gif图片
在android 开发中,由于Imagview 不能显示gif图片,所以就得自定义View 来实现显示gif图片 而android.graphics.Movie可以把gif图片解析成Movie帧来显示 ...
- Android自定义View实现图片放大,平移和显示大图片
原文地址 图片如果不显示:点击这里 前言 首先分析一下需求:将一个图片显示在屏幕上,并能够对其放大或者平移. 用 canvas 画 bitmap 主要有这么几个方法. void drawBitmap( ...
最新文章
- 虚拟机安装linux系统无法上网的解决方法
- Exchange Server 2003 Cluster
- Java instanceof 关键字【复习】
- Java中Socket通信-服务端和客户端双向传输字符串实现
- 孤荷凌寒自学python第五十四天使用python来删除Firebase数据库中的文档
- 【python 3.6】调用另一个文件的类的方法
- ambari mysql 密码_Ambari 切换 mysql 数据库
- php日志数据统计,PHP统计Nginx日志的User Agent数据
- linux文本模式无法打字,文本终端模式下中文输入法(Fcitx)配置(openSUSE Leap 42.1)...
- Spring之自动装配注入
- R语言colorRampPalette函数-创建颜色梯度(渐变色)
- h264视频与pcm音频合成MP4视频格式
- android远程协助
- 触摸屏控制变频器程序 触摸屏控制变频器程序
- 基于Python构建机器学习Web应用
- 长时间从事电脑操作者,知道怎样保护你的眼睛吗?
- Python 和matlab 关于DMD(动态模态分解)的实现和对比 21/06/08
- 《高校bbs或者科研论坛》
- Qt 调用echo命令写文件失效
- iOS开发之Build版本号自增