9.qt使用d3d
画三角形main.cpp12345678910111213#include <QApplication>#include "D3DWidget.h"int main(int argc, char* argv[]) { // 强制 Qt 不使用它默认的渲染器干扰原生绘制 QCoreApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); QApplication a(argc, argv); D3DWidget w; w.resize(800, 600); w.show(); return a.exec();}
D3DWidget.h12345678910111213141516171819202122232425262728293031323334353637383940#pragma once#include <QWidget>#include <d3d11.h>#include <wr ...
8.qt使用opengl
三角形main.cpp1234567891011121314151617181920212223242526272829303132#include <QMainWindow>#include <QVBoxLayout>#include <QPushButton>#include <QApplication>#include "TriangleWidget.h"class MyWindow : public QMainWindow {public: MyWindow() { // 创建容器和布局 QWidget* centralWidget = new QWidget(this); QVBoxLayout* layout = new QVBoxLayout(centralWidget); // 插入我们的 OpenGL 控件 TriangleWidget* glView = new TriangleWidget(this); ...
7.raylib配合imgui写一个按钮控件
绘制一行文本使用windows函数获取窗口句柄后使用imgui绘制。
main.cpp12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include "raylib.h"#include "imgui.h"#include "imgui_impl_win32.h"#include "imgui_impl_opengl3.h"#include "Win32Utils.h" // 引入隔离后的句柄获取函数#ifndef _DEBUG//#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址#pragma comment(lib, "raylib.lib" ...
6.raylib使用opengl绘制
绘制转动的三角形main.cpp1234567891011121314151617181920212223242526#include "GLRenderer.h"int main() { InitWindow(800, 600, "Clean OpenGL Wrapper"); SetTargetFPS(60); float rotation = 0.0f; while (!WindowShouldClose()) { rotation += 2.0f; BeginDrawing(); ClearBackground(DARKGRAY); // 使用封装后的逻辑 GLRenderer::Begin(); GLRenderer::DrawTestTriangle(400, 300, 100, rotation); // 这里你还可以直接写其他的 rlBegin / rlVertex 代码 GL ...
5.4raylib外部绘制多物体方框
UseRay.exe
绘制多个3d个物体做无无规则移动并且将ui与逻辑分离
main.cpp123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138#include <raylib.h>#include <raymath.h>#include <vector>#include <iostream>// 保持结构体对齐,确保 Search 程序读取步长为 24 字节struct Enemy & ...
5.3raylib外部绘制方框并依据特征码自动更新位置变量地址
UseRay.exemain.cpp12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <raylib.h>#include <raymath.h>#include <iostream>int main() { SetConfigFlags(FLAG_WINDOW_UNDECORATED); InitWindow(1280, 720, "FPS: Realistic Scale Demo"); // 1. 玩家相机 Camera3D camera = { 0 }; camera.position = Vector3{ 10.0f, 1.75f, 10.0f }; camera.targe ...
5.2raylib外部绘制方框
实现思路
修改主程序绘制一个非矩形的3d物体,让此物体做无规律移动。
修改外部绘制程序,绘制方框包裹3d物体跟随3d物体移动。
useray.exemain.cpp
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <raylib.h>#include <raymath.h>#include <iostream>int main() { SetConfigFlags(FLAG_WINDOW_UNDECORATED); InitWindow(1280, 720, "FPS: Realistic Scale Demo"); // 1. 玩家相机 Camera3D camera = { 0 }; camera.po ...
5.1raylib外部绘制搜索框
实现思路绘制搜索框覆盖在主程序上面
uselib.exemain.cpp
12345678910111213141516171819202122232425262728293031#define RAYGUI_IMPLEMENTATION#include "raylib.h"#ifndef _DEBUG#pragma comment(lib, "raylib.lib")#pragma comment(lib, "winmm.lib")// #pragma comment(lib, "opengl32.lib")// #pragma comment(lib, "gdi32.lib")// #pragma comment(lib, "shell32.lib")// #pragma comment(lib, "user32.lib")#endif // DEBIG#pragma comment( linker, "/subsystem:\&qu ...
4.2在dll中Hook图形库raylib与win32键盘消息加载与开关搜索框
Hook raylib关键函数DLL 劫持(Hook) EndDrawing 函数。
劫持窗口过程 (Hook WndProc)
不依赖 Raylib 的输入函数。直接拦截 Windows 的原始消息,这不依赖任何库的状态。
raylib主程序主程序必须是动态链接raylib.dll,静态链接的话需要在主程序的内存里通过 特征码扫描 (Pattern Scan) 找到这些静态函数的地址。
main.cpp
12345678910111213141516171819202122232425262728#define RAYGUI_IMPLEMENTATION#include "raylib.h"#ifndef _DEBUG#pragma comment(lib, "raylib.lib")#pragma comment(lib, "winmm.lib")// #pragma comment(lib, "opengl32.lib")// #pragma comment(lib, "gdi32.lib& ...
4.1在dll中对raylib渲染函数进行Hook加载搜索框
Hook raylib关键函数DLL 劫持(Hook) EndDrawing 函数。
强行注入思路如果你想这个搜索框注入到别人的 raylib 程序里:
需要用到 CreateRemoteThread。
需要找到主程序调用 EndDrawing 的内存地址。
需要把那个地址的指令跳转(JMP)到你的 DLL 函数地址。
raylib主程序main.cpp
12345678910111213141516171819202122232425262728#define RAYGUI_IMPLEMENTATION#include "raylib.h"#ifndef _DEBUG#pragma comment(lib, "raylib.lib")#pragma comment(lib, "winmm.lib")// #pragma comment(lib, "opengl32.lib")// #pragma comment(lib, "gdi32.lib")// #pragma comment ...
