Last weekend I spent a bit of time, well ok a lot of time – the whole weekend practically learning about DirectX 11. Woah, what a lot of stuff to do just to render a cube on the screen! The thing about it I suppose is that you’re doing a little bit of GPU programming on the chip which as it happens is quite different to what I’d normally be used to. Pixel shaders and vertex shaders being the prime areas where you’re writing code for the GPU. So you got to do things a bit differently.
What I must say is that the tutorials provided by Microsoft are pretty good. You can check them out here: https://github.com/walbourn/directx-sdk-samples – I cloned the repo and to my surprise it was about 300MBs and i was doing that on my data plan on my phone. wowsers. So a lot of good stuff there.
The nice thing about graphic programming is that its totally different to what I'm used to and as such I’m totally out of my comfort zone, and so is game development for that matter, in most cases but in other cases I feel right at come – C/C++, Win32 and COM to a certain extent. The interesting thing about graphic programming as I said is the newness for me. Learning about the device, immediate device context(apparently dropped in DX12), swap chains and front and back buffers is interesting.
The aspects about 3D theory is something that’s taking a bit of time to master. I can get the 3D coordinate system, mostly and I’m happy with vertexes and describing them and laying them out and then sending them into the graphics pipeline. I say I’m happy with it – I basically understand it. The tricky stuff is the math around matrix transformations. Its something that I’m doing to figure out soon.Basically the idea is about doing affine transformations to objects(objects don’t change fundamental form) – basically manipulating the objects so that they say move and stuff like that. Most of this is geared to 3D graphics programming – like simulations and stuff like that, especially games.
Objects, so far being things made up of triangles so far. And boy does it take a lot of work to send a couple of triangles in! The idea I suppose is to build up on the tedium of this and abstract it and I guess this is true of most complexity in this world but understanding it and appreciating it is what makes developing a suitable abstraction possible. This is what i suppose a game engine does. But you got to know what you;re doing first and that's kinda complex.
The HLSL shader language that you use to define your vertex and pixel shaders is kinda, sorta like C which is good. I’m still trying to get my head around that. I’m still trying to get my head around the projection space/view calculations too as this is a conversion that takes place to represent your 3d world in a 2d space and mostly this calculation happens to the vertexes you pass in to the GPU by the vertex shader. Direct X seems to have easy methods to do all the work for me but I’d like to understand it more. I was flipping through a game engine design book and they just copy and paste the methods that do the magic and move on. Makes me thing that I should perhaps to the same.
Took the day off today because I got a dentist appointment and a hygienist appointment back to back and I will be having someone over on Wednesday so I need to make the place presentable – all things I can do just before I head into London for the dentist.
Back to game development now - I’m still trying to get my GCC4 compiling so I an follow the game engine design but for some reason the objects aren’t linking – specifically the bullet physics library. It was compiling about not linking with VS12 binaries while i was in VS15 which i guess is understandable so I downloaded VS12 and still nothing changes . So obviously I don't understand the problem yet and need to do that before I do anything else.
I’ve also been watching the world athletics championships too, and a bit of the highlights in the cricket. I enjoy watching athletics the most though. Always have. Its a tough life being an athlete.
Currently annoyed with Windows 10 because its the latest version of windows and I like being on the latest but Windows 10 is just not as good and refined as previous versions, namely Windows 7. That being said, I’ve been working on Fedora 26 for some time now and did some cool perl scripting recently on it – Long Live Linux! The problem is that I’m dual booting with windows 10 and I dont have enough space to compile the Linux kernel. The other problem is that while I’m annoyed with Windows 10, its up-to-date on my PC and I’m using it to learn DirectX and other windows specific stuff like my whole Visual Studio is on there. So I’m between a rock and a hard place I think, though things could be worse i suppose so I’m not going to complain anymore.
Been working on a new feature at work which is pretty cool and I’ve refactored the pants of the codebase. I love refactoring. maybe too much. We’ve also got this push to automate every feature we release which is cool and good but I’m not quite ready yet. So I’ll need to start thing about that pretty sharpish.