So I am planning to start learning DirectX by grabbing Frank Luna's book "Introduction to 3D Game Programming with DirectX 10". But since I have a GeForce Go 7 graphics card, I am wondering will I be able to at least test the code from the book? Or should I take his older book about DirectX 9, which my GPU supports? But speaking about that, it would be a little pity to learn outdated stuff since I read that DX10 has introduced quite a lot of new concept, so I am totally confused at the moment.
On the other hand, perhaps with the hardware I have I would be more happier learning older version of OpenGL?
If you don't have the money to get updated hardware, get the book to match the hardware you have.
Most of what you will need to learn transfers from one to version to the other - if you get proficient with one version, you can move to another and keep most of your knowledge - because most of what you need for graphics programming isn't the API.
You just need to get started and get some code running as quick as possible!
If you have Windows 7 you could use WARP until you can get a hold of better hardware, but it will be much slower than using an actual DirectX 10 graphics card.
Related
I would like to have a go at making some simple games for personal/learning purposes. By simple games I mean games like platform, maze, arcade games for example. I would also one day like to create a platform game with a simple editor to allow others to edit and design their own game levels.
I am not sure if Delphi is the way to go though, I don't see or hear many people writing games in Delphi, but Delphi is the only language I understand on an intermediate level.
If Delphi is acceptable to create simple games as I mentioned, am I right in thinking that I would require some libraries that would help me do this, maybe Direct X for example?
I am using Delphi XE, I wish I had waited and upgraded to Delphi XE2 instead as it seems that includes some built in Drawing libraries.
I look forward to hearing your responses on this.
Thanks.
Check out Asphyre
And to encourage you; Soldat, C-evo and many more quality games were built with Delphi, Game Maker too.
There are to many options ...
If you are really new to this take a look at this site and get some good examples from children that try to make games Pascal programming for schools ...
If you are one level up here some library's that give you the a great start for small and big games... this is for new and very advance pascal programming...
GLScene just get the svn version... (Windows,MacOsX,Linux and hear for android and iphone ;) ) -- 2D,3D,isometric........
CastII Great engine (Windows,MacOsX,Linux) -- Mostly 3D....
Asphyre Sphinx 2 One of my favorite i allready start a big big game with that library... NOW (Windows32-64,MacOsX,Linux,and IOS) with DelphiXE2
ZenGL Fantastic and quite easy to use (Windows,Linux,MacOsX and i hear android too) --Mostly 2D but i hear 3D is in way out...
Castle Great library for me not to easy... (Windows,Linux,MacOsX) compine great with freepascal and lazarus...
Andorra 2d This is going to be the best but suddenly stops ... 2d programming at its best...
there are many other libraries and i here a few of them come out before the new year...
But if you go deeper you can try the hard way... the headers so ...
for opengl use the header from here delphigl
for SDL use the Jedi-SDL header (great by the way)...
for directX use the clootie and good luck...
But the most important thing in the game programming is the paper...
Every think write in the paper is the most value object in object programming...
Hope that helps...
Delphi is great for games! Here is a very good resource to get you started: http://www.pascalgamedevelopment.com/
It has a friendly forum where you can ask questions.
I have personally used Delphi for graphics programming for many years and written a free open source game engine in Delphi called ZGameEditor.
azrael11
GLScene doesn't support Android(work in progress as I know)
Cast II works only on Windows
Asphyre Sphinx 2 doesn't support Linux
ZenGL supports also iOS. Android - work in progress. 3D - I'm not interested in it currently, so only fast 2D is main goal.
I need innovative ideas on Gaming Application for Windows Phone. Can anyone guide me to how to approach new ideas on gaming application? How shall i start as i am new to this domain? No gaming experience at all? Also i have worked only on C & C++. But now i have to work on gaming application using C# with XNA framework & Silverlight for windows phone 7.
Thanks
Before bumping into a certain framework, and even before approaching a gaming idea, you might wanna invest some time learning C# first. Knowing that you're from a C/C++ background, you should find yourself highly familiar with C#.
Later on, the XNA creators community have extensive libraries, samples and tutorials that can guide you to assimilate XNA.
I wouldn't recommend going for Silverlight unless you want to build an application, and not a game. XNA has an enormous performance/quality boost because it natively uses the GPU for most graphics algorithms including 100% hardware accelerated rendering. Additionally, it has so many game-programming specific libraries and classes that can make your life a lot better.
I remember a highly-animated XNA 2D game of mine was consuming around 2-3% of CPU usage compared to 60% of a much simpler Silverlight game.
XNA will be better for graphics intensive, 3d or games with complex animations utilising more of the GPU. Silverlight can be used for games less demanding of graphics processing.
Are there any limitations with using DirectCompute on DX10.1 GPUs? I will do most of my development on a DX11 desktop, but I'd like to demo code on a DX10.1 laptop. It'll be a Macbook Pro running Win7 in Bootcamp. The GPU is an Nvidia 330M. What limitations can I expect?
Edit: I found a page about using Compute Shaders on DX10, but it's not entirely clear to me if these are serious limitations or not.
Edit 2: My goal is to learn a bit about quantitative finance and solving PDEs.
Frankly I think CS 4.x is rather limitating because of the lack of atomics, double precision, restrictions for accessing groupshared memory, as well as the 16KB limit. Also you can have only one UAV that can be bound.
I believe most of DirectCompute developers will use CS 4.x for post-processing in games or so (probably with both CS 4.x and CS 5.0 code path). People that want to do heavy GPGPU work will learn with CS 4.x then later move on CS 5.0.
Now you're saying you haven't a clue of the CS 4.x limitations. I suggest to go with CS 4.x and stick to it for now.
But really it all depends what you are developing, how and your target audience (professional developer vs hobby coder, shipping your application now vs in two years, mainstream audience vs pro market etc).
I can't tell you if the limitations are serious or not, as 1) it depends on what you're trying to achieve, and 2) I simply don't know enough about the compute shader.
However, you can run the DirectX Caps Viewer to see what features your device will support (or what limitations you can expect). Also, AFAIK other than the limitations highlighted in the link you posted, you will only be able to use CS 4.0, not the new features in CS 5.0.
I want to do projects to make my resume more appealing to game companies. So I am going to start buying books. But I don't know rather to read DirectX 9 or 10 api books to start off with. DirectX10 is great, but it seems the industry is moving slow to 10. so should I use 9 or go with 10 ??
I would suggest learning the basics using directx9 and then rapidly moving on to dx11. DirectX11 is harder to get started in than DirectX9 because it's slightly more complex but also a lot of the utility functions in D3DX are no longer there, or have been moved to source code like the effects framework. This is no bad thing, but it does make it signifiacantly more complex to learn as you have to learn a lot more things at once.
Spend 2 or 3 weeks learning DX9 then move to DX11 for "real" work :P
Learn basic DX9 using the fixed pipeline and d3dx for loading models etc. It's a lot simpler than DX11 and much better documented, and you'll get a triangle and then a model on screen very much faster. Play with that until you completely understand the basic concepts and tranformations.
But then rewrite it all using shaders only. You'll need to use them in DX10/11 anyway but it's a lot easier to learn when you already have a working framework of code, and it's a lot simpler to get that working in DX9.
Once you have that working, learn DX11. You'll have to switch math libraries. You'll have to invent your own model formats and loaders. You'll have to either invent your own effects framework or use the example one, but they are all much easier now you already know the basics of 3d and programming shaders.
TBH further to OneOfOne's comment if you know how to do 3D development in GL, D3D9, D3D10 or D3D11 then you can transfer those skills to any of the others with a little bit of work.
Personally I'd aim for D3D11 as that way you are learning the cutting edge. You'll find you'll be able to do GL, D3D9 or D3D10 with a little work. Do enough work on the theory and you'll discover that its not even that hard to transfer the skills to a fully software engine.
If your intention is really to learn a skill that you would use in the game industry, stick with DirectX 9. Since DirectX 10 and 11 both require Vista or Window 7, game developers are still mostly ignoring them and targeting DirectX 9 in order to have support for Windows XP.
That being said, it doesn't really matter which you start with. The differences are not that large. If you understand the concepts behind 3D APIs and how the GPU pipeline works, you can pick up any of the three or even OpenGL with minimal effort.
Fact is, you need to learn both.
As long as 50% of gamers are still on WinXP, you're going to need to be able to program in Direct3D9.
D3D9 isn't any easier to get started with than D3D10/11. Its the same principles, with vertices to be placed, normals to be calculated, and meshes to be rendered. Whether you're creating a ID3D11BlendState structure or calling IDirect3DDevice9::SetRenderState(), its the same concept, just different ways of doing it.
After working with d3d11 a couple of days, I've come to think of it as better than DX9 in a lot of ways. For one, you're able to use the full caps of the GPU including geometry shaders. 2nd, it forces you to fully understand the graphics pipeline to even draw anything (note how functions are named after the stage of the pipeline they affect: here: (IA* fcns: input-assembler stage, OM* fcns: output-merger stage etc) ). This may result in a slightly larger INITIAL startup curve, but once you get it, its not any harder than D3D9 and is better, since the very naming of the functions helps concepts stick.
So get going on both, and learning them in tandem may help reduce the amount of effort you spend learning deprecated API's/methods of doing things from DX9 (ie you really want to spend more time using shaders, and don't use the fixed function pipeline section of DX9 too much).
You can check Luna's books for DX9 /DX11(I suggest you start with 11). You can check out http://www.rastertek.com/tutdx11.html but he doesn't explain everything so you can go in Luna s book to see what is with those functions or properties
With some little exceptions, DX10 is just a legacy free DX9. For example DX9 had build in options for rendering Flatshaded, Textured or using a Shader. In DX10 these options are gone, you always have to use a real shader. If you want to do flatshading, write a HLSL shader that does flat shading.
So I would suggest you learn DX10 (or DX11). You will be able to adopt fast to DX9 but with a more modern coding style by not using legacy functions. They can be quiet confusing, so DX10 will focus you on relevant things.
If you are a real beginner, and setting up a vertex-buffer to create a single triangle is confusing you (as real 3D-Programmer you are no more interesten in single triangles) I even would suggest to start with OpenGL. You will have faster success, but in reality this can be a little bit distracting as DX9-Legacy if you want to focus on modern 3D-Coding.
Yes do not waste your time with DX10 it was never really adopted as the industry standard for any period of time, there wasn't any big enough changes to warrant people upgrading from DX9 but for DX11 there was.
I suggest directx 11, there's no reason in my opinion to waste time on deprecated functions or techniques.
Learning shaders from the start will make things way more clear
Try doing the samples from the sample folder of both 9 and 10, and if your computer can support it, 11. This is what I am doing.
My zune just updated to 3.0 (didn't even realize they were releasing something new!) and the update came with two games, but the Zune marketplace does not have games.
Where do I go to get started, and what are the capabilities of the Zune in terms of games/apps?
Well, first, you must download the Microsoft XNA 3.0 CTP. Read the documentation, which will explain the capabilities. But, from memory:
No hardware accelerated 3d (obviously, you can create a software 3d engine and then render the result to a 2d sprite, but... Don't expect much in terms of performance ;))
No XACT, you must use a new sound API
Just an update but note that XNA 3.0 has been released. It requires some flavor of Visual Studio 2008.
I downloaded it and coded & deployed "hello world" to my Zune in no time at all. Very easy.
You should check out the blog of Rob Miles. He has a few chapters of his book on his site. Great place to start.
I was hoping someone here would have better resources, but as this seems to be a new area of development, here's one resource that appears to give all the steps for a newbie to get started (too many assume you already have Visual studio, etc).
I'm really interested in a better in-depth overview of the capabilities as well, though.
-Adam