205 karma · joined May 16, 2016
D3D11 contexts are explicit, real objects that you create, manipulate, and pass around. They can be properly and realistically handled in multi-threaded code. OpenGL contexts are opaque and global, and properly handling them in multiple threads is a nightmare. Multiple OpenGL contexts is also very different in functionality from multiple D3D11 device contexts.
IMO, this is a common misconception. Or, at least, the extrapolation of it is. Vulkan might require a lot of code to initialize, and has extra responsibilities related to memory management, synchronization, etc., but in my experience the end product doesn't require significantly more code than other graphics APIs. The up-front cost you pay doesn't translate to increased costs everywhere else, at least not to the same degree.
My library supports D3D11, Metal, Vulkan, and OpenGL, and Vulkan is the second-largest backend, but not by a lot (LOC: ~5k Vulkan, ~3.3k D3D11, ~2.5k Metal, 6k OpenGL). LOC is not the best indicator of complexity, to be fair. My OpenGL backend is definitely the most difficult to maintain and the largest, because the API is such a pain to deal with.
> The imgui framework handles the previous frames events when drawing the current frame.
I'm not terribly familiar with the inner workings of these libraries, though, so I could be wrong. Since you pass in the input state for each frame, it's my understanding that they just process the current frame's "events" during that frame. It would be a little weird if you passed some mouse click event into the system and your Button() call returned true the NEXT frame (I think that's what you're suggesting).
A button being clicked doesn't really have anything to do with whether it's been drawn or not. The relevant information is whether the user has hovered the button with their mouse and (mouse position), and whether the mouse button is pressed (mouse button state), both of which are usually provided to the system on a per-frame basis. I've not used Nuklear, but this is how dear imgui works. If the GUI system knows where you are clicking, and must know the position of the button it's drawing (in order to render it), then it should be able to tell if it's being pressed.
Small nit: I'm used to being able to drag "upwards" to make a knob's value higher, but here it seems to do cause the value to decrease. Perhaps I'm just too used to how FL Studio behaves and others prefer this way.
For something more professional and polished, there is Xenko, which runs on CoreCLR for some of its non-mobile targets. https://xenko.com/
Also, Unity itself doesn't really run on Mono -- it just has a scripting layer that hosts Mono on top of its C++ core. Perhaps not a useful distinction for you, but I thought I'd mention it.
(Note: I work on .NET Core at Microsoft)
> Further, normally such testing is best done with a tool like BenchmarkDotNet; I’ve not done so for this post simply to make it easy for you to copy-and-paste the samples out into a console app and try them.
We love BenchmarkDotNet and use it (and other perf tools) quite a lot internally.
I followed this guy's blog for some further configuration: https://alexcabal.com/get-a-working-touchpad-on-a-14-razer-b...
My main problem was that battery life was pretty abysmal under Linux. With Windows, I would get 4-5 hours under light usage, but under Ubuntu I would pretty much only get ~2-2.5 hours, even without doing much on it. Stressing the CPU/GPU made it die even faster. But that thing isn't really known for its battery life anyways.
Unfortunately I don't have Ubuntu installed on it anymore because I couldn't get Windows and Ubuntu to happily coexist side-by-side. Windows (10) always gave me a boot failure when Ubuntu was installed next to it.
https://github.com/dotnet/standard/blob/master/netstandard/r...
I think that GitHub is either having trouble with how large some of these files are, or just hasn't indexed them yet, since they aren't showing up in the repo search.
Yes, they most likely will be. If you search through the reference assembly interfaces listed here, you should be able to tell whether the functionality you want will be available.
https://github.com/dotnet/standard/tree/master/netstandard/r...
For things like legacy synchronous or Begin/End async methods, we are more or less adding them wholesale to the standard. If something like that is still missing, then it's most likely an accidental omission rather than a conscious removal.
(I work on .NET at Microsoft).
Actually, this has always been the case for .NET Core, but you may be thinking of our older preview versions which gave you the option to run your app entirely on mono.
(I work on .NET at Microsoft)
At a really basic level, you simply declare a "static extern" method with a "DllImport" attribute attached to it. For example, you could call "printf" from libc like so:
[DllImport("libc")]
public static extern void printf(string message);
static void Main()
{
printf("Hello World");
}(I work on the core libraries for .NET)