当前位置: 首页 > news >正文

90设计网站怎么绑定手机号河北黄页网

90设计网站怎么绑定手机号,河北黄页网,wordpress签到积分商城,创建手机网页ImGui 是一个轻量级、易于使用的 C GUI 库#xff0c;以其高性能和简单性著称#xff0c;广泛应用于游戏开发、实时应用和工具开发中。本教程将指导你如何使用 ImGui 创建一个基本的桌面应用程序#xff0c;并通过 CMake 管理项目依赖和构建过程。我们的目标是构建一个文件大… ImGui 是一个轻量级、易于使用的 C GUI 库以其高性能和简单性著称广泛应用于游戏开发、实时应用和工具开发中。本教程将指导你如何使用 ImGui 创建一个基本的桌面应用程序并通过 CMake 管理项目依赖和构建过程。我们的目标是构建一个文件大小在一兆字节左右的轻量级应用程序。通过本教程你将学会如何配置项目、初始化窗口和渲染环境并使用 ImGui 绘制简单的用户界面。 环境准备 Windows系统CMake 3.20GitC编译器(MinGW) 三步搭建项目 1. 创建项目结构 my_imgui_app/ ├── CMakeLists.txt ├── imgui_lib.cmake ├── main.cpp └── Application.hpp2. 配置CMake文件 主CMakeLists.txt: cmake_minimum_required(VERSION 3.20) project(my_imgui_project LANGUAGES CXX)# —— 限制仅在 MinGW 构建 —— if (NOT MINGW)message(FATAL_ERROR This project only supports MinGW.) endif()# —— C 标准配置 —— set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)# —— 编译选项 —— add_compile_options(-Os # 空间优化-ffunction-sections # 独立函数节-fdata-sections # 独立数据节-fvisibilityhidden # 隐藏未必要符号-s # strip 符号表-fno-ident # 移除编译器识别信息-fno-asynchronous-unwind-tables # 删除 unwind 表节-fno-rtti -fno-exceptions # 若无 RTTI/异常支持可启用 )add_link_options(-Os-Wl,--gc-sections # 删除未使用节-Wl,--strip-all # 删除所有符号调试信息-static # 全部库静态链接-static-libgcc # 固定 libgcc 静态-static-libstdc # 固定 libstdc 静态 )# —— 引入 imgui 库配置 —— include(imgui_lib.cmake)# —— 主可执行文件 —— add_executable(${PROJECT_NAME} WIN32 main.cpp)# —— 链接 ImGui 库PUBLIC 传递 include 路径 —— target_link_libraries(${PROJECT_NAME}PUBLIC imgui_lib )imgui_lib.cmake: # imgui 库配置 # 使用 FetchContent 获取 ImGui include(FetchContent)#── 获取 ImGui 仓库 ───────────────────────── FetchContent_Declare(imguiGIT_REPOSITORY https://github.com/ocornut/imguiGIT_TAG v1.90.4 ) FetchContent_MakeAvailable(imgui)#── 仅包含必要的源文件 ─────────────────────── set(IMGUI_SOURCES${imgui_SOURCE_DIR}/imgui.cpp${imgui_SOURCE_DIR}/imgui_draw.cpp${imgui_SOURCE_DIR}/imgui_tables.cpp${imgui_SOURCE_DIR}/imgui_widgets.cpp${imgui_SOURCE_DIR}/backends/imgui_impl_win32.cpp${imgui_SOURCE_DIR}/backends/imgui_impl_dx11.cpp )#── 创建静态库 ────────────────────────────── add_library(imgui_lib STATIC ${IMGUI_SOURCES})#── 头文件包含目录 ────────────────────────── target_include_directories(imgui_lib PUBLIC${imgui_SOURCE_DIR}${imgui_SOURCE_DIR}/backends )#── 系统库链接 ────────────────────────────── target_link_libraries(imgui_lib PUBLICd3d11dxgid3dcompileruser32gdi32kernel32dwmapi )3. 编写主程序代码 main.cpp: #include imgui.h // ImGui 核心头 #include imgui_impl_win32.h // Win32 实现 #include imgui_impl_dx11.h // DX11 实现 #include d3d11.h // DX11 API #include windows.h // Win32 API #include wrl/client.h // ComPtr 智能指针 #include Application.hpp // UI 渲染逻辑extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND h, UINT msg, WPARAM w, LPARAM l); using Microsoft::WRL::ComPtr; // 使用 ComPtr 简化资源管理static ComPtrID3D11Device device; // DX11 设备 static ComPtrID3D11DeviceContext context; // 设备上下文 static ComPtrIDXGISwapChain swapChain; // 交换链 static ComPtrID3D11RenderTargetView rtv; // 渲染目标视图LRESULT CALLBACK WndProc(HWND h, UINT msg, WPARAM w, LPARAM l) {if (ImGui_ImplWin32_WndProcHandler(h, msg, w, l)) return true; // 处理 ImGui 消息switch (msg) {case WM_SIZE: if (w ! SIZE_MINIMIZED) { // 窗口调整大小rtv.Reset();swapChain-ResizeBuffers(0, LOWORD(l), HIWORD(l), DXGI_FORMAT_UNKNOWN, 0);ComPtrID3D11Texture2D bb; swapChain-GetBuffer(0, IID_PPV_ARGS(bb));device-CreateRenderTargetView(bb.Get(), nullptr, rtv);} return 0;case WM_DESTROY: PostQuitMessage(0); return 0; // 退出消息}return DefWindowProcW(h, msg, w, l); // 默认处理 }bool InitD3D(HWND h) {DXGI_SWAP_CHAIN_DESC sd{}; // 配置交换链sd.BufferCount 2;sd.BufferDesc.Format DXGI_FORMAT_R8G8B8A8_UNORM;sd.BufferUsage DXGI_USAGE_RENDER_TARGET_OUTPUT;sd.OutputWindow h;sd.SampleDesc.Count 1;sd.Windowed TRUE;sd.SwapEffect DXGI_SWAP_EFFECT_DISCARD;if (FAILED(D3D11CreateDeviceAndSwapChain( // 创建 DX11 设备与交换链nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0,(D3D_FEATURE_LEVEL[]){D3D_FEATURE_LEVEL_11_0,D3D_FEATURE_LEVEL_10_0}, 2,D3D11_SDK_VERSION, sd, swapChain, device, nullptr, context)))return false;ComPtrID3D11Texture2D bb;swapChain-GetBuffer(0, IID_PPV_ARGS(bb));device-CreateRenderTargetView(bb.Get(), nullptr, rtv); // 创建渲染目标视图return true; }int WINAPI wWinMain(HINSTANCE hInst, HINSTANCE, PWSTR, int) {WNDCLASSEXW wc{sizeof(wc), CS_CLASSDC, WndProc, 0,0, hInst, nullptr, nullptr, nullptr, nullptr, LImGuiWin, nullptr};RegisterClassExW(wc); // 注册窗口类HWND h CreateWindowW(wc.lpszClassName, LDear ImGui DX11, WS_OVERLAPPEDWINDOW,100,100, 1280,800, nullptr, nullptr, wc.hInstance, nullptr); // 创建窗口if (!InitD3D(h)) return -1; // 初始化 DX11ShowWindow(h, SW_SHOWDEFAULT); // 显示窗口IMGUI_CHECKVERSION(); ImGui::CreateContext(); // 初始化 ImGuiauto io ImGui::GetIO();io.ConfigFlags | ImGuiConfigFlags_NavEnableKeyboard; // 开启键盘导航io.IniFilename nullptr; // 禁用 .ini 文件生成ImGui::StyleColorsDark(); // 深色主题io.Fonts-AddFontFromFileTTF(C:\\Windows\\Fonts\\msyh.ttc, 18,nullptr, io.Fonts-GetGlyphRangesChineseFull()); // 加载中文字体io.Fonts-Build();ImGui_ImplWin32_Init(h); ImGui_ImplDX11_Init(device.Get(), context.Get()); // 初始化平台/渲染器MSG msg; bool done false;while (!done) { // 主循环while (PeekMessage(msg, nullptr, 0,0, PM_REMOVE)) {TranslateMessage(msg); DispatchMessage(msg);if (msg.message WM_QUIT) done true;}ImGui_ImplDX11_NewFrame(); ImGui_ImplWin32_NewFrame(); ImGui::NewFrame(); // 新帧RenderUI(); // 用户 UI 绘制ImGui::Render();context-OMSetRenderTargets(1, rtv.GetAddressOf(), nullptr); // 设置渲染目标context-ClearRenderTargetView(rtv.Get(), (float[]){0.45f,0.55f,0.60f,1.00f}); // 清屏ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData()); // 渲染 ImGuiswapChain-Present(1, 0); // 显示帧}ImGui_ImplDX11_Shutdown(); ImGui_ImplWin32_Shutdown(); ImGui::DestroyContext(); // 清理 ImGuirtv.Reset(); swapChain.Reset(); context.Reset(); device.Reset(); // 释放 DX11 资源DestroyWindow(h); UnregisterClassW(wc.lpszClassName, wc.hInstance); // 清理窗口return 0; }// MinGW 入口兼容 INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, PSTR pScmdline, int iCmdshow) {return wWinMain(hInst, hPrev, GetCommandLineW(), iCmdshow); }Application.hpp: #pragma once #include imgui.hvoid RenderUI() {// 设置窗口标志ImGuiWindowFlags window_flags ImGuiWindowFlags_NoTitleBar // 无标题栏| ImGuiWindowFlags_NoResize // 不可缩放| ImGuiWindowFlags_NoMove // 不可移动| ImGuiWindowFlags_NoCollapse // 不可折叠| ImGuiWindowFlags_NoNav // 禁用键盘/鼠标导航| ImGuiWindowFlags_NoBringToFrontOnFocus// 获取焦点不置顶| ImGuiWindowFlags_NoSavedSettings; // 不保存窗口状态// 设置为全屏ImGuiViewport* viewport ImGui::GetMainViewport();ImGui::SetNextWindowPos(viewport-Pos);ImGui::SetNextWindowSize(viewport-Size);// 不传递关闭指针 → 无法被关闭/最小化ImGui::Begin(实验管理界面, nullptr, window_flags);if (ImGui::BeginTabBar(实验Tab栏)){if (ImGui::BeginTabItem(实验1数据采集)){ImGui::Text(这里是数据采集界面内容);ImGui::EndTabItem();}if (ImGui::BeginTabItem(实验2文件操作)){ImGui::Text(这里是文件操作界面内容);ImGui::EndTabItem();}// 更多实验页ImGui::EndTabBar();}ImGui::End(); }构建与运行 生成构建系统: mkdir build cd build cmake ..编译项目: cmake --build .运行程序: ./my_imgui_app.exe
http://www.hkea.cn/news/14350223/

相关文章:

  • 教育网站前置审批建立起以什么会晤机制为引领
  • 邢台市建设局网站揭阳网站建设网站
  • 提高网站粘性临沂网站排名
  • 长春网站建设哪家好亚马逊怎么做网站推广
  • php网站只能打开首页微信如何创建自己的公众号
  • 个体户 网站建设学校官网网页设计模板
  • 有网站是做水果原产地代发的吗网站运营的主要工作内容
  • 网站开发工程师前景怎么样网络营销的功能有哪些?
  • 天河区门户网站招生考试哪里做网站比较快
  • 东昌府聊城网站优化济南市建设局网站查房产信息
  • 商城网站合作协议九江 网站建站 设计 公司
  • 网站做外链多少钱整合营销理论主要是指
  • 网站页面分析网上建站赚钱
  • 自己制作的网站模板以后可以修改吗汕头seo
  • 做海报的素材那个网站比较好互联网营销师在哪里报名
  • 买空间去哪个网站wordpress积分商城主题
  • 域名进行网站备案吗开发公司未售的空置房物业费
  • 网站做关键词链接有用吗青岛建站公司流程
  • 网站建设及上线流程360建筑网如何注销账号
  • 呼和浩特免费制作网站乌克兰军事最新消息
  • 手机网站的推广外围网站怎么做
  • 青州网站开发怎么把自己的网站放到百度搜索上
  • 官方网站改版建议广阳网站制作
  • 深圳集团网站建设专业知名公司
  • 网站开发和网站制作的区别优化百度搜索
  • 韩国网站如何切换中文商城开发网站开发
  • 找人做个网站大概多少钱建站工具 风铃
  • 江西省寻乌县建设局网站建设部网站监理变更
  • 合肥网站外包wordpress 本地视频链接
  • 重庆市建设公共资源交易中心网站建设网站有哪些好处和坏处