Why d3d effect framework is deprecated? - directx-9

Per this document https://learn.microsoft.com/en-us/windows/win32/direct3dhlsl/specifying-compiler-targets, it seems the effect framework start from d3d10 is marked as legacy , what is the equivalent in d3d12 (if any) ? many thanks!!!

The fx_* profiles are deprecated in the FXC compiler and the D3DCompiler_47.dll that's available for redistribution and included with the Windows 10 OS. They still work, although fx_5_0 is missing support for a few newer features from the latest Shader Model 5.0.
The runtime component is the Effects for Direct3D 11. The latest version is on GitHub, but is provided very much in an "as is" state. It's more or less unchanged for a few years so I marked the repo as 'archive'.
There is no Effects (FX) port for Direct3D 12, and the new Shader Model 6 DXIL compiler has no support for fx_* profiles.
See this blog post
Now as to why is a much longer story, but in the end most engines have their own materials/effects system, so it never got much use for DX10 or DX11.
If you are looking for a basic material/effects system to learn Direct3D then take a look at DirectX Tool Kit for DX11 or DX12.

Related

Is there a more recent alternative to AvalonDock?

I need a docking system like AvalonDock for a project, but it appears to have last been updated in June 2013. Is there something more... actively developed that I could use in its stead?
AvalonDock is actually pretty mature and bug free and that is probably why it has not been modified for a long time; I've been using it in a commercial project for quite a while now and it has no obvious bugs. The only thing that my team has found is an issue with its drag and drop handlers deadlocking with our own, but that is probably an issue with our code and not theirs.
I've previously used the Telerik dock (also in a commercial project) and AvalonDock is definitely better (despite the fact that Telerik is paid for and commercially supported). That shouldn't be much of a surprise as Telerik libraries are notoriously buggy and their support is pitiful.
I would be really surprised if you could find something materially better in the closed or open source worlds.
As a side note AvalonDock is part of the SharpDevelop project and a newer version of the dock can be found in their codebase: https://github.com/icsharpcode/SharpDevelop/tree/master/src/Libraries/AvalonDock/AvalonDock
I was looking at it a few weeks ago to work out how they had resolved an issue with routed commands and floating windows and it is a fair bit different from the version that they distribute as a standalone. You might want to just take that library and compile it yourself; not sure what the advantages of this version would practically be, but the last check-in was about 7 months ago.

iOS: Is there absolutely no way to build for armv6 in Xcode 4.5?

Starting with Xcode 4.5 the possibility of building for armv6 devices is not given anymore (iPhone/iPod touch 1st and 2nd generation). This means no new versions of our app for iPhone 2G and 3G which is very unlucky. Does anyone know if there will be a workaround? I really don´t see any technical reasons for this.
You can have multiple versions of xcode installed. In the past, that has been the fix needing to use an older xcode feature.
It is a workaround, and the project files may eventually evolve in a way that no longer supports the older tools, but for the time being, that will allow you to build for older targets.
If you have a single project that you want to work with in both versions of XCode, then you may end up having to manage separate project control files via source control tricks and/or file shuffling.
I would also recommend that project structure changes and binary file management (e.g. Core Data models) happen via the old version, as XCode 4.5 will be backward compatible, but forward compat is rarely assured.
There's another solution I found in chpwn blog: Building for armv6 in Xcode 4.5.
This allows you to work with Xcode 4.5 but compile using 5.1 SDK.
The downside: you can’t use the iOS 6 SDK when using this trick, and you can’t build for armv7s.
Yes, there are workarounds. If you need to actually take advantage of new iOS 6 features, try either of the first couple answers to this related question. The first answer requires using both Xcode 4.4 and 4.5. If you never want to have to open Xcode 4.4, then use the second answer.
If you just want to be able to build an executable in Xcode 4.5 that works on armv6, armv7 and armv7s devices, without actually taking advantage of new iOS 6 SDK APIs, then you can see my answer to another question, which is much simpler ... but has the limitation that you can't take advantage of new iOS 6 features on iOS 6 devices.
You can add the string "armv6 armv7" as architecture. Do not select a predefined setting.

Checking Silverlight Migration to Moonlight

We're in the process of creating a Silverlight project and wondered how we could validate/test if it would run on Moonlight. From regular .Net to Mono there is the Mono Migration Analyzer which generates a report on which methods are missing in Mono to provide full support.
Are there any similar tools from Silverlight to Moonlight?
As I know there aren't any and event wouldn't be by my opinion.
The situation with moonlight is little bit more complicated.
With mono you're checking just clr methods towards standard. That's pretty easy.
Moonlight 1.0 is only stable version and should be 100% compatible with Silverlight, XAML is covered, but there are of course some bugs, the only comparision is on this page: http://go-mono.com/moonlight/MoonlightStatus.aspx.
Moonlight 2.0 is in beta state, there is clr part that can be checked with moma towards the mono version it's based on, cause the binaries are only stripped by mono linker. The API will be quite near 100% if not fully compleated. The rest is same like with Moonlight 1.0.
The status page is here: http://go-mono.com/moonlight/MoonlightStatus.aspx?v=2
Like Yakeen said, 2.0 is in beta. The best way to test is going to be installing moonlight on a test box and manually testing your site.
If it were me, I'd create a Virtual Machine with some flavor of Linux+Firefox and install the beta from their download site

Will Windows Forms be deprecated in favor of WPF? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Locked. This question and its answers are locked because the question is off-topic but has historical significance. It is not currently accepting new answers or interactions.
We're starting a new project and are trying to decide to use either Windows Forms or WPF.
I've read some of the other Stack Overflow posts, and realize that WPF has some advantages in the data-binding and appearance areas, but also has a steep learning curve and fairly immature tools and controls.
We would like to better understand if Microsoft is planning on stopping new development of the Windows Forms technology and forcing all new development to eventually go to WPF, or if both technologies will be maintained and improved. (Or are they just going to wait and see how it goes before making up their mind?)
Currently, it seems like WPF is not necessarily the best way to go for line of business applications that don't need extra bells and whistles in the UI. However, it would be good to know if WPF is something we'll need to embrace sooner or later.
This is partially a reasoned argument, and partially a heart-felt rant....
WinForms is based on the user32/GDI technology that has existed since the dawn of modern Windows. It is not going to go anywhere, in all senses of the phrase: it won't get new features; it won't get support dropped.
Or maybe it yet will. The charting API in .NET 4.0 is new and written for GDI, not WPF.
In general, Microsoft has a history with new technologies that looks like the following:
Invent new API.
Innovate with that API for 2 or 3 product cycles.
Realize that continuing to innovate means making unreasonable concessions to backwards compatibility or having realizations that the technology didn't originally address.
Invent new API by wrapping or leaving the existing API around. The existing API doesn't disappear, but new stuff doesn't use it, either.
RDO -> DAO -> ADO -> ADO.NET -> LINQ to SQL -> Entity Framework, toss in some ODBC ... there is a treasure trove of "dead" and wrapped technologies that are still usable and still exist today. These are data access technologies, but the same idea applies; UI frameworks last a little longer because they are the most visible areas of applications.
If I put my Nostradomus hat on, I can safely say that when .NET, oh, 6.0 is out in 2015--which sounds far away but is as close as we are to 2003--WPF will be as "dead" as Windows Forms because some other nifty managed interface will have been created that smoothes over all of the as-yet-undiscovered mistakes and inconveniences of WPF. Who cares? Everything we are yabbering about today will be deprecated by then. (Something is going to have to give in .NET 5.0 anyway because the framework is getting comically large.)
If anything, the thing that Windows Forms has going for it is that it's based on the technology that has existed for well over a decade, and that inertia is not dying anytime soon: the browser you are typing in is using GDI, the taskbar is using GDI, your instant messaging application is using GDI, the new Ribbon control in Windows 7 is using GDI, the $60 printer sitting your desk is using a GDI printer driver, the Windows CE applications running on your phone run a port of Windows Forms and GDI, the new Event Viewer in Windows Vista is using Windows Forms, and there is a large third-party component community behind the Windows Forms platform--WPF is a very small, niche product that only exists in the managed world, which is itself smaller than its unmanaged counterpart.
To this end, I feel that all of these "WinForms vs. WPF" discussions are blowing things out of proportion; the technologies are not mutually exclusive or inferior/superior, as much as Microsoft marketing might have us believe, and Microsoft's developers are smart enough to realize this. They are simply different and one of them happens to be older. If we didn't consider this periodically, we would have all listened to Gartner in 2005 and stopped building Windows applications entirely and moved everything to AJAX on the Web ... with our SOA interfaces ... that expose an alternative REST interface ... that use a TDD DDD model on that backend ... abstracted from the database by an ORM.
Being so eager to abandon a technology for fear of its deprecation only assures our clients that we will maintain a constant level of inexperience and incompetence at programming software solutions.
WPF is part of the future, to be sure, but it's not THE future. Personally, I'm on the fence to see if WPF "makes it" in the UI technology sense that previous data access technologies haven't, although Visual Studio adopting it in 2010 is a pretty comforting sign that Microsoft is actually serious about it by dogfooding it in a flagship product.
To sum up: if you are building a LOB application, I wouldn't feel guilty about using WinForms. If you need an advanced layout scenario, WPF interop is always available to you, just as one enhances a regular Web site occasionally with a Flash object. But for anything else, you owe it to your client to come up with a Good Reason for transitioning the whole team and shell to WPF; Windows Forms has its problems, but half the battle with any platform is knowing what the problems and limitations are, and most of the world (including Microsoft) is still learning WPF.
WinForms won't be deprecated until Win32 is ... which could be quite sometime!
(Remembering that WinForms is basically an abstraction over Win32)
WPF on the other hand has few direct dependencies on Win32 so could potentially form the basis of a "fresh start" UI layer on a future version of windows. At which point I would imagine Win32 (and thus WinForms) will be completely ditched and only available through virtualization. As I said this could be along way off :)
Microsoft's support policy for the .NET Framework and all classes within it is 5+5: 5 years of mainstream support after a release, and then 5 years of extended support is available, or a fee.
With the .NET 4.0 update, including all the WinForms stuff, being released in 2009, you will get 5 years of mainstream support, to 2014 for any WinForms app built on .NET 4.0.
It's likely whatever comes after .NET 4.0 will include WinForms, too, in which case the clock resets.
This 5+5 policy applies to all business-related infrastructure software: Windows, Windows Server, SQL Server, Visual Studio, .NET, and so on.
The point is, you won't have to worry about lack of support for WinForms.
But, the prior posters are correct - the advancements are going into WPF.
I wouldn't worry too much about long term support. WPF may be getting all the love lately, but there's too much WinForms code out there to abandon support. After all, even MFC is still getting updates with each Visual Studio release.
I think Windows Forms will continue to be maintained by Microsoft, but improved upon only in small ways. All of the hot new innovations will go to WPF. Windows Forms is in a similar position as LINQ to SQL. LINQ to SQL is a tight, compact, fast ORM that is awesome, but Microsoft is throwing its weight behind the Entity Framework.
Windows Forms is great for what it is, and what it is used for, which is small, tightly-wrapped applications. It still has many years of life left in it.
If you want an application that will (more) easily port between a web interface, a WPF interface, or a Silverlight (or even a Flex) interface, Windows Forms is probably not for you. These other interfaces use standards-based markup, and an architecture that lends itself better to enterprise development.
I certainly wouldn't call WinForms dead... but I also wouldn't write a new project in it. I would write all new projects using WPF for a myriad of reasons. The biggest is that if you use WPF/XAML, your porting efforts to Silverlight will be much easier.
I went to a WPF preview camp in Redmond a couple of years ago, and I asked this same question to one of the folks working on Crossbow (WPF/Windows Forms interop). His response was that Windows Forms will be supported for the foreseeable future, but could make no guarantees.
Given that, I think you'll be OK basing your application on Windows Forms knowing that you'll have some level of support for the next version or two of .NET (for example, 3-5 years).
I would personally bet closer to 10 years considering Microsoft's continued support for Win32. You may not get boatloads of new features with each release, but you won't be dropped, either.
In any case, I would actually be more concerned with Microsoft's shift from rich-client technologies to web-based technologies, but not enough to ignore opportunities to create compelling applications in either case.

DirectX programming on Windows, what is the preferred way?

I need to develop a part of a business application in a flashy eye candy way. Therefore wanted to see if I can use DirectX. Here's what I got.
First I read how using C/C++ is like shooting yourself on the foot and I should use DirectX.NET instead. I couldn't disagree. It's the 21st century.
Downloaded DirectX SDK but couldn't find the .NET assemblies in there. Searching the net now revealed that DirectX .NET (called MDX) is now obsolete (released in 2006). And that I should use XNA instead which was mainly developed for XBOX.
Downloaded XNA. But it won’t install because I don't have C#.NET Express 2005 SP1. Installed SP1 on my VS Pro 2005. But it won’t install still. It needs Express 2005 and exactly that single one version, not Pro, clearly not 2008.
Frustrated tried to download C#.NET Express which is free. But the link from MS which says C#.2005 actually downloads C#.2008, because C#.2005 is now obsolete.
And now I read that MS is now putting it's force behind WPF/silverlight. And XNA doesn't support DX10 and Vista doesn't come with DX9.
Now I have two choices:
Go 15 years back and code in plain old C/C++. At least C has proven itself to be timeless.
Try silverlight.
What would be your advice? Or am I missing something?
Udpate: Would like to add that DX10 is not backward compatible with any other DX version. SlimeDX looks really promissing. But as a very new package, I am not sure how much helpful the documentation and tutorials will be.
Udpate 2: It seems that the first download link that google brings up when searching for XNA download, which I used, is not the latest one. Thanks DouglasH for providing the link to v.3. Downloaing it. Probably it will work.
But then agian. Should I switch to WPF/Silverlight? Or go with XNA? Which one is better documented and future-profe?
More update: Vista realy doesn't come with DirectX 9 preinstalled [check by googling]. At least it didn't on my machine bnough last year. Googling for it revealed that I have to manually install DirectX 9 on Vista after downloading it from MS. But my attemet failed beucase hardware drivers for DX9/vista were missing or didn't work. I got the idea that it's not supported that well.
MS has stopped supporting the .net DirectX libraries. There is an open source alternative called SlimDX, and it works well. The documentation leaves some to be desired, but it can be puzzled together by using the DirectX C++ documentation and some common sense.
WPF does pretty good 3D stuff, and there are lot of fish eye panels and source code available for WPF, yes since MS has gone ways from their technology, in today's terms, we can not focus on only one technology by MS to make entire one business application.
Sure we are also tired of using multiple different versions of technologies even to do smallest parts, but I believe they are doing great job by serving billion machines, it sure isnt easy but WPF and .NET seem to be most stable technologies by microsoft and also they are spending good money on making completely managed operating system as well.
If you ever go back to C or C++, you might want to check out Simple DirectMedia Layer (SDL).
IMHO, it is much easier than DirectX.
URL: http://www.libsdl.org/
DirectX is fully backwards-compatible. Any DX9 application will run on Vista and DX10. As for XNA and VS2005 - that's a bit weird. That would make XNA effectively useless. Check if you haven't missed something.
couple of points, which version of XNA did you download. Here is the link for XNA Studio 3.0 which will run on Visual Studio 2008. http://www.microsoft.com/downloads/details.aspx?FamilyId=7D70D6ED-1EDD-4852-9883-9A33C0AD8FEE&displaylang=en
2nd, I sure hope that Vista has Direct X 9, since that is the version of direct X that the DWM runs on in Vista. I think you will find the DLLs for Direct X 9 and before and the DLL,s for DirectX 10 loaded in Vista. Or for that Matter Windows 7 which will also have directX 11 (edit 2 note that the DWM is built on DirectX10, with a software emulator for systems that don't have 3d video hardware, a dx10ondx9 drivers for those with directx 9 cards and of course full support for directx 10 cards).
edit,
Additionally if you downloaded the March directx sdk, you download, directx 9.0c, directx 10, 10.1 and the beta of directX 11. and I would have to check if DirectX 8.x is still included or not although DirectX 9 is backwards compatible with most of that platform.
Though I never worked directly with DirectX (little bit with OpenGL) - I would take WPF. The least-painful to implement (transparency, gradients, brushes, animations, etc.) and it provides solid-performance from what I have seen and experienced myself.
But yes, it's not platform-independent.

Resources