kiergo

package module
v0.0.0-...-f3dbf71 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 12, 2022 License: MIT Imports: 4 Imported by: 0

README

Kiero-Golang-DirectX11-Hook

This is a very dirty Golang implementation of Kiero Hook for Directx11.
For a QuickStart, you can check out the example folder.

Information

This works due to a little modification of the imgui-go wrapper by inkyblackness.
you can get it with go get github.com/RinLovesYou/imgui-go

!! THIS MAKES A LOT OF ASSUMPTIONS ABOUT YOUR ENVIRONMENT. IT EXPECTS DEPENDENCIES LIKE MINHOOK/DX11/ETC TO BE INJECTED/PRESENT !!

image

QuickStart

package main

import (
	"fmt"
	"unsafe"

	"github.com/RinLovesYou/imgui-go"
	"github.com/RinLovesYou/kiergo"
)

func init() {
	err := kiergo.Hook(OnPresent, WndProc)
	if err != nil {
		fmt.Println(err)
	}
}

var gInitialized bool
var device unsafe.Pointer
var context unsafe.Pointer
var window unsafe.Pointer

var showDemo bool
var showGuide bool

func OnPresent(pSwapChain unsafe.Pointer, SyncInterval, FlagsT uint32) error {
	if !gInitialized {
		var err error

		device, err = kiergo.SetupValuesGetDevice(pSwapChain)
		if err != nil {
			return err
		}

		context, err = kiergo.GetContext()
		if err != nil {
			return err
		}

		window, err = kiergo.GetGameWindow()
		if err != nil {
			return err
		}

		imgui.CreateContext(nil)
		io := imgui.CurrentIO()
		io.SetConfigFlags(imgui.ConfigFlagsNavEnableKeyboard)

		imgui.Win32Init(window)
		imgui.Dx11Init(device, context)

		gInitialized = true
	}

	imgui.Dx11NewFrame()
	imgui.Win32NewFrame()
	imgui.NewFrame()

	imgui.Begin("hello, golang")

	imgui.Text("\"it just works\" - RinLovesYou 2022")
	if imgui.Button("Show Demo") {
		showDemo = !showDemo
	}

	if imgui.Button("Show Guide") {
		showGuide = !showGuide
	}

	imgui.End()

	if showDemo {
		imgui.ShowDemoWindow(&showDemo)
	}

	if showGuide {
		imgui.ShowUserGuide()
	}

	imgui.Render()
	kiergo.SetRenderTargets()
	imgui.Dx11RenderDrawData(imgui.RenderedDrawData())

	return nil
}

func WndProc(hwnd unsafe.Pointer, msg uint32, wparam, lparam unsafe.Pointer) error {
	imgui.Win32WndProcHandler(hwnd, msg, wparam, lparam)
	return nil
}

func main() {

}

compile with go build --buildmode=c-shared -o YourDll.dll main.go

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFindPresent          = errors.New("failed to find d3d11 present")
	ErrSetupValuesGetDevice = errors.New("failed to get d3d11 device")
	ErrGetGameWindow        = errors.New("failed to get game window")
	ErrGetContext           = errors.New("failed to get context")
)

Functions

func GetContext

func GetContext() (unsafe.Pointer, error)

func GetGameWindow

func GetGameWindow() (unsafe.Pointer, error)

func Hook

func Hook(present func(unsafe.Pointer, uint32, uint32) error, wndProc func(unsafe.Pointer, uint32, unsafe.Pointer, unsafe.Pointer) error) error

func SetRenderTargets

func SetRenderTargets()

func SetupValuesGetDevice

func SetupValuesGetDevice(swapChain unsafe.Pointer) (unsafe.Pointer, error)

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL