Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not working for dx10 games #37

Open
xCONFLiCTiONx opened this issue Aug 9, 2017 · 26 comments
Open

Not working for dx10 games #37

xCONFLiCTiONx opened this issue Aug 9, 2017 · 26 comments

Comments

@xCONFLiCTiONx
Copy link

Man, I'm sorry for making this an issue but your dll is the one working for me except I need one for dx10 games too. I search and find for dx9 and dx11 only. Why nothing for dx10? What am I missing here? Thank you for your time.

@agrippa1994
Copy link
Owner

I think that this is the right place to post feature requests ;)

Yes, I would also love it, but I'm not familiar with dx 10 and 11 development (not even with dx 9, or with Windows development in general). @nefarius forked this repository a while ago and this fork supports it. (https://github.com/nefarius/Indicium-Supra) However, I don't know how to use this project, but you can check it out anyway.

@nefarius
Copy link

nefarius commented Aug 9, 2017

Note to self: improve/add documentation 😁

First of all: thanks @agrippa1994 for the initial effort. How to use it? Quick and lazy answer: have a look at the two demo projects included.

Somewhat longer answer: it's design as a core DLL which loads plugins which then do render whatever they want. You create a DLL which exposes certain symbols (e.g. for Present function) which then get's called with the process' device pointers. I will add some doc, I promise 😄

@JohnnyCrazy
Copy link
Collaborator

It's really amazing that you can easily embed imgui, a lot of possibilities right there and a cool project @nefarius ! 👍 But it kinda seems like your library will target low-level users more than this one. It won't be able to replace this library because there is not an easy API like TextSetString(...) or similar.

But I just had a quick look at your code, so correct me if i'm wrong 😉

@nefarius
Copy link

nefarius commented Aug 9, 2017

@JohnnyCrazy thanks. As with a lot of my projects they once had a specific purpose when I started them. This purpose is currently fulfilled so I didn't invest in altering or creating a new "user-friendly" API. Yes, you can say it's low-level and I didn't intend it as a replacement. I'm always open for suggestions though since I'm far away from being perfect 🤣

@xCONFLiCTiONx
Copy link
Author

Well, I gotta say, this looks really promising. But, I have no idea where to even start. The sample I found is for dx9 which I already have. A sample for dx10 would be great. I was able to compile the 3 dll's but I still have no idea what to even do with them. LOL

@nefarius
Copy link

@mikeyhalla you were a tick too fast, I'm cleaning up and adding samples and documentation right as we speak 😁 Just gimme a few more minutes.

@xCONFLiCTiONx
Copy link
Author

nice! thx :D

@nefarius
Copy link

It's not that verbose because I lack the time but have a look here.

@xCONFLiCTiONx
Copy link
Author

xCONFLiCTiONx commented Aug 11, 2017

Thank you! I have been looking through it and doing what I can but I am C# coder and know pretty much nothing of C++. I am figuring things out but I just don't know what I'm doing. lol

What I was really hoping for was to compile your dll and just use that with my C# program but I am not sure what reference points to use. <---- not even great at C# especially pinvoke but have more experience with that than C++

Thanks again... :D

@nefarius
Copy link

You can't reference a native DLL in C# the way you reference a managed assembly. Even if you could it won't do anything good here because the DLLs don't expose any functionality to a C# program.

The framework is designed as a low-level rendering helper, there - currently - is no way to simply call a method from a C# program and expect something to appear on the games screen like the original version does. One would have to implement all of @agrippa1994 s rendering functions for every DirectX version which wasn't my goal to begin with and would take a lot of time and knowledge. It's totally doable though.

Have a look at this function, this is basically where the magic happens.

INDICIUM_EXPORT Present(IID guid, LPVOID unknown, Direct3DVersion version)

This function gets called on every frame by the game, relayed to your plugin via the core DLL.

I'm afraid if you wanna profit from the library in its current stage you have to get down with C++ and the DirectX API.

@xCONFLiCTiONx
Copy link
Author

Thank you @nefarius I got it working in a game now and you provided a way to render FPS already. :D So basically you already did it for me. lol

@nefarius
Copy link

Good to know! Have fun!

@xCONFLiCTiONx
Copy link
Author

Please forgive if I'm bothering. The sample does not seem to work for dx10 games. I can get it to work in dx9 no problem but anything higher is a no go.

Sample I'm using: https://github.com/nefarius/Indicium-Supra/tree/master/samples/Indicium-ImGui
I'm trying, trust me :D

@nefarius
Copy link

What DX10 game? I tested with Bioshock 2 where it's rendering fine.

@xCONFLiCTiONx
Copy link
Author

hmmm, Assassin's Creed III and bioshock inifinite neither are working... I know I must be missing something (I'm nub) ahahah sorry, I am trying and getting it faster than I thought though.

@nefarius
Copy link

You should find a log file generated at %TEMP%\Indicium-Supra.log what does it say?

@nefarius
Copy link

Oh and you did press F11, right? This I should document 😆

@xCONFLiCTiONx
Copy link
Author

xCONFLiCTiONx commented Aug 14, 2017

My setup: Visual Studio 2017 on Windows 10 x64. I followed your instructions to the letter in every README.md and all works perfectly except for a few DX10 Games that CAN be run in DX11 but I don't have hardware supported for anything higher than DX10. Its Nvidia 9800GT and its DX10 (not even 10.1 which may have something to do with it). I have it working great in all DX9 games.

Oh and you did press F11, right? This I should document 😆: LOL yeah, I found it in the code near the bottom. :D

You should find a log file generated at %TEMP%\Indicium-Supra.log what does it say?:

DX9 game Working says: Direct3D11 [Error]: Couldn't get handle to D3D11.dll
Assassins Creed, being run in DX10 but has DX11 Support, Not working says: Direct3D11 [Error]: Couldn't create D3D11 device

https://pastebin.com/scQ8FrkP

@JohnnyCrazy
Copy link
Collaborator

Little side note: Maybe @nefarius could enable issues in his fork and you could continue your discussion there because it's kinda offtopic for this repo.

@xCONFLiCTiONx
Copy link
Author

I apologize for the inconvenience and am open for having it done in my own repo if necessary which I can fix later on.

@xCONFLiCTiONx
Copy link
Author

Thank you for your support guys! I moved the topic to: nefarius/Indicium-Supra#1

@nefarius
Copy link

Yeah sorry for the spam...

@agrippa1994
Copy link
Owner

You're welcome.
I just thought to build a (better) messaging system and high level API on the top of https://github.com/nefarius/Indicium-Supra as this fork supports all available DirectX backends (except 12 as I can see). This is just a thought but maybe I take a closer look at this approach as soon as I have time for that.

@nefarius
Copy link

I thought about the same, I'm currently looking into OpenCV integration which looks very promising so far.

@nefarius
Copy link

@agrippa1994 @mikeyhalla FYI I've just added DirectX 12 support to the core.

@MSxDOS
Copy link

MSxDOS commented Nov 28, 2017

So, a high-level API for D3D11 (x64) is not going to happen?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants