sharpdx / SharpDX

SharpDX GitHub Repository
http://sharpdx.org
MIT License
1.69k stars 638 forks source link

UWP App Working on Lumia 950XL (ARM) #924

Closed kburgoyne closed 7 years ago

kburgoyne commented 7 years ago

Just FYI... After migrating from a Win8 Universal app using SharpDX v3 to a Win10 UWP app using SharpDX v4 I've just completed running for the first time a release build on a Lumia 950XL (ARM). This means the Native Tool Chain targeting ARM. No apparent issues. I've also previously run Win10 UWP x86 release builds using the Native Tool Chain targeting x86.

Compliments to the SharpDX Chefs. :-)

xoofx commented 7 years ago

Good, thanks for the feedback!

kburgoyne commented 7 years ago

The best thing would be just a UWP app version of the tumbling cube without all the fancy code structuring used in the SharpDX v3 samples. The v3 samples provide a lot of variation in what they show, but they're not optimal for somebody just getting started and just wants something very simple that is easily understood.

Is there a Microsoft page/posting/etc about "WinOnArm Q4 2017"? There is sooo much going on with Azure, UWP, ASP, IoT, etc, etc, etc, that I can't keep up and actually get any work done at the same time.

All I can say is I'll put a cube demo on my "to do" list and try to find a breathing point to create one. I have some milestones I'm trying to hit right now. I keep thinking "I'm almost there", but then little supporting tasks keep cropping up.

@xoofx -- Does SharpDX have any kind of logo associated with it? If I find time to create a UWP tumbling cube I'll start with solid colors to keep it the simplest to follow. I could look at a second version which paints a texture on the cube. Once the solid colors is done it's a minor step to add the texture.

Gavin-Williams commented 7 years ago

@JimSEOW I don't understand, SharpDX already works with SwapChainPanel, has done for ever.

xoofx commented 7 years ago

@JimSEOW What do you mean is a trap? The complexity doesn't come from SharpDX, but DirectX and UWP interop.

DirectX is not straightforward, interop with XAML Windows 10 the same, so don't expect any added values for SharpDX, as it is just a low level wrapper of these technologies. You have to go through the existing DirectX C++ documentation and code samples and translate them to C#. But If you are looking for a higher level interaction, SharpDX is definitely not the right library (use MonoGame, Unity, Xenko...etc.)

Typically, how do you think I ported the Store samples? I just took the original C++ sample code and ported them straight to C#. I didn't have to face any hurdle as it was a plain translation. So now, I did port these samples 2 years ago, it took me quite some time to do them (and frankly, this is very boring)...

Notice that since then, nobody helped there to bring any new samples...

So as I'm a bit "done" with SharpDX today (no longer using it on my own or in my company), I'm no longer able to provide this huge work - for free- for the community, but I will gladly integrate any PR that can bring new samples.

kburgoyne commented 7 years ago

Considering nobody gets paid to work on SharpDX, the tone of the comments seems out of line. Actually writing a beginners SharpDX example for future beginners to reference might prove to be an excellent place to start for a beginner.

The bottom line is, SharpDX is DirectX. Those who have mastered DirectX using C++ had a very steep learning curve as well. DirectX is very close to being "down on the metal" of the GPU itself. The basics of how GPUs go about their business is pretty exposed at the DirectX level. Like with DirectX, packages which abstract stuff even further from the GPU level and thus make things easier for developers are packages which sit on top of DirectX and are not part of DirectX itself. Thus the same would be true for SharpDX, which is really just DirectX.

xoofx commented 7 years ago

So as I said, PR are welcome.

kburgoyne commented 7 years ago

The one thing from your feedback that I'm seeing is the desire not just for a working UWP sample, but preferably a UWP sample that also serves as a kind of tutorial. I did start a little work on that. However the fact remains that ultimately it's DirectX.

Such a tutorial can expose people to the "right way of thinking" about what DirectX really is. I do remember when I had all the wrong notions about what DirectX is. However I have an ancient background writing assembly language and even some machine language, so I had a foundation upon which to start to grasp how DirectX was a reflection of the GPU architecture. (And probably visa-versa as GPUs and DirectX evolved over time.)

In the end, beginners are still faced with it being DirectX which is very low-level. Most likely one of the largest benefits of such a tutorial would be to puncture people's misperceptions (like I had) about what DirectX is and what it isn't.

It is true such a tutorial could answer a whole lot of questions about getting DirectX initialized, the need for vertex buffers, etc, and perhaps even some early exposure to "the general concept" of how vertex buffers feed into vertex and pixel shaders. A tutorial can even provide some very primitive shaders to provide some exposure to the concept. So I guess that's constructive. I probably would have benefitted.

The warning is that once the basic concepts are understood, that just opens the door to even more complexity. However certainly grasping that complexity is easier once one gets an understanding of the basic DirectX concepts.

Regarding your comment about 7 year olds. They're not going to be using DirectX/SharpDX directly unless they're some kind of wizard. It's an admirable idea, but so is teaching jet aircraft design to 7 years olds. It's not an introductory subject level. Far far from it. I wouldn't dismiss a 7 year old wizard as being unable to figure it all out, but that's not "introductory". That's a 7 year old geek digging deep. (Keep track of him and hire him 10 years later.)

What keeps being emphasized is that, for introductory level, somebody would have to write "something" which sits on top of SharpDX and hides (takes care of) most of the complexity of DirectX. What approach that "something" takes would be best guided by somebody who actually works with the kids. Certainly the Remix3D stuff has positives in that regard.

I believe I asked above. Do you have any links to pages which discuss Remix3D from a more developer standpoint? Or at least the details that a developer would need to know?

Gavin-Williams commented 7 years ago

@JimSEOW Not related to SharpDX ...

"In most universities, if you joined as a fresh man, you have to go through the shit orientation so that your senior one year older can shit on you."

What universities do this ? I've been to three different universities (Australia), and that's not my experience at all. First year university is amazing, and very supportive. No one ever shit on me. Students absolutely love orientation, all Australian universities have a tradition of orientation being rich with activities and entertainment etc. I can't imagine other universities around the world not doing something similar or especially making their first year students have a 'shit time'. Have you been to university yourself? Because it doesn't sound like it.