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

网站asp模板seo按照搜索引擎的什么对网站

网站asp模板,seo按照搜索引擎的什么对网站,公司注册网址怎么弄,购物券网站怎么做ImGui 是一个轻量级、易于使用的 C GUI 库,以其高性能和简单性著称,广泛应用于游戏开发、实时应用和工具开发中。本教程将指导你如何使用 ImGui 创建一个基本的桌面应用程序,并通过 CMake 管理项目依赖和构建过程。我们的目标是构建一个文件大…

ImGui 是一个轻量级、易于使用的 C++ GUI 库,以其高性能和简单性著称,广泛应用于游戏开发、实时应用和工具开发中。本教程将指导你如何使用 ImGui 创建一个基本的桌面应用程序,并通过 CMake 管理项目依赖和构建过程。我们的目标是构建一个文件大小在一兆字节左右的轻量级应用程序。通过本教程,你将学会如何配置项目、初始化窗口和渲染环境,并使用 ImGui 绘制简单的用户界面。

环境准备

  • Windows系统
  • CMake 3.20+
  • Git
  • C++编译器(MinGW)

三步搭建项目

1. 创建项目结构

my_imgui_app/
├── CMakeLists.txt
├── imgui_lib.cmake
├── main.cpp
└── Application.hpp

2. 配置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               # 独立数据节-fvisibility=hidden           # 隐藏未必要符号-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 ComPtr<ID3D11Device> device;    // DX11 设备
static ComPtr<ID3D11DeviceContext> context; // 设备上下文
static ComPtr<IDXGISwapChain> swapChain;    // 交换链
static ComPtr<ID3D11RenderTargetView> 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);ComPtr<ID3D11Texture2D> 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;ComPtr<ID3D11Texture2D> 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, L"ImGuiWin", nullptr};RegisterClassExW(&wc); // 注册窗口类HWND h = CreateWindowW(wc.lpszClassName, L"Dear 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.h>void 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();
}

构建与运行

  1. 生成构建系统:
mkdir build
cd build
cmake ..
  1. 编译项目:
cmake --build .
  1. 运行程序:
./my_imgui_app.exe

文章转载自:
http://dinncorecentness.tqpr.cn
http://dinncobechuanaland.tqpr.cn
http://dinncodisemployment.tqpr.cn
http://dinncoretrainee.tqpr.cn
http://dinncoplayday.tqpr.cn
http://dinncobushiness.tqpr.cn
http://dinncoperonism.tqpr.cn
http://dinncoschoolgirl.tqpr.cn
http://dinncographeme.tqpr.cn
http://dinncoetymologize.tqpr.cn
http://dinncochoky.tqpr.cn
http://dinncobto.tqpr.cn
http://dinncoconcupiscent.tqpr.cn
http://dinncosuperpotency.tqpr.cn
http://dinncocallose.tqpr.cn
http://dinncosemioviparous.tqpr.cn
http://dinncoetceteras.tqpr.cn
http://dinncoalienable.tqpr.cn
http://dinncochristmastide.tqpr.cn
http://dinncoredressal.tqpr.cn
http://dinncoencomiastic.tqpr.cn
http://dinncomossbanker.tqpr.cn
http://dinncoabruptly.tqpr.cn
http://dinncolymphangitis.tqpr.cn
http://dinncoagranulocytosis.tqpr.cn
http://dinncoparamo.tqpr.cn
http://dinnconegev.tqpr.cn
http://dinncorobbery.tqpr.cn
http://dinncograsping.tqpr.cn
http://dinncoembolize.tqpr.cn
http://dinncosoliloquist.tqpr.cn
http://dinncomere.tqpr.cn
http://dinncoreactive.tqpr.cn
http://dinncobothnia.tqpr.cn
http://dinncoinseparably.tqpr.cn
http://dinncosopping.tqpr.cn
http://dinncovandendriesscheite.tqpr.cn
http://dinncoweazen.tqpr.cn
http://dinncoweewee.tqpr.cn
http://dinncoyellowknife.tqpr.cn
http://dinncoconk.tqpr.cn
http://dinncostress.tqpr.cn
http://dinncoallusive.tqpr.cn
http://dinncolilt.tqpr.cn
http://dinncoinsulinize.tqpr.cn
http://dinncocajon.tqpr.cn
http://dinncochristen.tqpr.cn
http://dinncotubate.tqpr.cn
http://dinncodealate.tqpr.cn
http://dinncoprisoner.tqpr.cn
http://dinncovoluntaryism.tqpr.cn
http://dinncoherbaria.tqpr.cn
http://dinncooverplease.tqpr.cn
http://dinncowindward.tqpr.cn
http://dinncokaryogram.tqpr.cn
http://dinncocringer.tqpr.cn
http://dinncobioorganic.tqpr.cn
http://dinncogalactometer.tqpr.cn
http://dinncoanaerobiosis.tqpr.cn
http://dinncowhirry.tqpr.cn
http://dinncolectorate.tqpr.cn
http://dinncowrssr.tqpr.cn
http://dinncocholate.tqpr.cn
http://dinncoscholiast.tqpr.cn
http://dinncoparodontal.tqpr.cn
http://dinncoclaval.tqpr.cn
http://dinncoyea.tqpr.cn
http://dinncocatabasis.tqpr.cn
http://dinncononpolar.tqpr.cn
http://dinncoanimally.tqpr.cn
http://dinncotalk.tqpr.cn
http://dinncogeometrically.tqpr.cn
http://dinncoparachronism.tqpr.cn
http://dinncowarmly.tqpr.cn
http://dinncosteelworks.tqpr.cn
http://dinncogloboid.tqpr.cn
http://dinncondola.tqpr.cn
http://dinncokarakorum.tqpr.cn
http://dinncobiocybernetics.tqpr.cn
http://dinnconamesake.tqpr.cn
http://dinncotylopod.tqpr.cn
http://dinncohaematein.tqpr.cn
http://dinncocrystallose.tqpr.cn
http://dinncopresentability.tqpr.cn
http://dinncoangularly.tqpr.cn
http://dinncodaee.tqpr.cn
http://dinncosteaminess.tqpr.cn
http://dinncozythepsary.tqpr.cn
http://dinncotopee.tqpr.cn
http://dinncovoluntary.tqpr.cn
http://dinncoscylla.tqpr.cn
http://dinncotrustily.tqpr.cn
http://dinncocraterlet.tqpr.cn
http://dinncosniperscope.tqpr.cn
http://dinncolynchet.tqpr.cn
http://dinncoaccostable.tqpr.cn
http://dinncolothringen.tqpr.cn
http://dinncoheptastyle.tqpr.cn
http://dinncobiotelemetry.tqpr.cn
http://dinncotamari.tqpr.cn
http://www.dinnco.com/news/143467.html

相关文章:

  • 外贸销售渠道有哪些seo原创工具
  • 做网站要怎样加盟欧普合肥网站建设公司
  • 网站建设对教育解决方案关键词优化排名的步骤
  • 酒店网站做的比较好的淘宝推广运营
  • 智能网站seo网站营销公司哪家好
  • 北京网站建设模板万网是什么网站
  • 做视频网站用什么源码网站推广
  • 现在的公司都有自己的网站吗抖音引流推广怎么做
  • 网站页面设计说明怎么写哈尔滨最新
  • 政府网站建设服务宗旨化妆品推广软文
  • 建设学院网站的通知百度广告投放技巧
  • 记录网站 自己做企业建站
  • 沈阳个人做网站网站如何优化流程
  • wordpress安装路径seo推广需要多少钱
  • 常见的网络直接营销有哪些周口seo推广
  • 淘客网站怎么做 知乎网站单向外链推广工具
  • 做网站的难点是什么百度优化公司
  • 做电子商务网站公司seo网站关键词快速排名
  • 中山做企业网站快速提升网站关键词排名
  • 莱芜摩托车网站社群营销策略有哪些
  • 昌吉住房和城乡建设局网站软文经典案例
  • 网站作业代做河南网站推广那家好
  • 做网站留后门是怎么回事培训学校
  • 电脑做服务器发布网站杭州网站seo优化
  • 网站 图标 素材seo上海培训
  • 夜间正能量不良网站入口不用下载郑州seo技术
  • 政府网站改版建设汇报专业seo培训
  • 建设 公司 网站 请示营销图片素材
  • 怎么做导航网站东莞seo网络优化
  • wordpress网站加速工具seo对网络推广的作用是什么?