Tag Archives: Gorgon – My 2D graphics library

Git hub

sitelogoI’ve finally given in and become a lemming and followed the rest of the planet to git hub.  So, from this point forward, Gorgon’s source code will be hosted at Git Hub.  The source code currently hosted in the Subversion repository at Google code will remain as-is indefinitely.  This means that in order to get the most up-to-date version of Gorgon, you will have to go to the git hub repository.

And here’s the link (also posted on the right side bar over there):

https://github.com/Tape-Worm/Gorgon

Font editor

sitelogoIt’s been a very long time since I’ve made an update here.  I’ve been working steadily on the font editor module for the Gorgon editor and it’s finally nearing completion (the last 99% of 99% of 99% etc…).

I’m quite proud of this thing.  It’s supports a pretty well rounded suite of functionality for designing a bitmap font for use with Gorgon.  Besides the usual standard stuff like font outlines, font faces, styles, etc… it also supports glyph brushes, custom glyphs, glyph advancement and offset editing and custom kerning pair tables.

Here’s a few images:


Continue reading

Cameras

sitelogoIn the 2.x version of Gorgon I wanted to add cameras.  It was most tedious before when you wanted to translate an entire scene by an arbitrary amount.  So when I started this thing, I created an Orthographic camera object.  The previous version of Gorgon used an Orthographic camera internally and this was never exposed to the user.  But in this case, I exposed the camera so that the user can define their own viewing mechanism.

There’s more info and a video inside…

Continue reading

Clearly I’ve not been posting

sitelogoBut I have been doing stuff.

I’ve been spending my time refactoring and just cleaning up the code in Gorgon.  I made the mistake of getting Resharper and it put me on this crusade of cleaning up the code because apparently I’m just awful.  Also, I’ve been finishing up the primary graphics API (not the 2D stuff) by adding a bunch of new things to it like geometry shaders, compute shaders, and hull/domain shaders for tesselation (this one is cool, if not a little baffling).  I also made the API a little closer to Direct 3D 11 by adding views to resource object types.

Continue reading

The editor

sitelogoSo I’ve been busy working on building the editor for creating the content for Gorgon.  I know I posted a screenshot of a very old initial version of the editor way back:

Font editor window.

Ugly.

Anyway, I totally scrapped that old thing and restarted.  And here’s a more up to date (but not even close to being done) screen shot:

Not quite as ugly

A little better.

This new editor is going to be a replacement for all the tools in the previous version of Gorgon.  It will handle file management duties (File System Editor in v1.x), sprite editing (Sprite Editor in v1.x) and atlasing (Atlas tool in v1.x).  It will also add font editing.  The big thing about this editor is that it’s entirely plug-in based.  Meaning that the font editor, sprite editor, etc… are/will be DLLs that are loaded/unloaded as needed.  What this means for you:  You can write your own plug-in modules for it.  Want to build a map editor and integrate it with the rest of your content?  With the plug-in system in the editor, you can write your own map editor and host it right in the editor interface (if anything the minimized tedium of having to write UI code is worth it).  Want to write out your content data as encrypted data?  You can extend the file writing functionality to write out encrypted file data.

Unlike the sprite editor in the previous version, the files are no longer saved as loose files on your hard drive that require a separate utility (file system editor) to pack into a single compressed file.  This editor now outputs data as a packed file (of course, this can be modified with a plug-in) so you don’t have to come up with a strategy to update your content, allowing you to edit directly.  This is where it takes over from the file system editor and like the old file system editor this one is capable of importing files by either clicking on an Import menu item, or dragging and dropping directly from explorer.  And, obviously, there’ll be a way to extract the files to your harddrive should you wish to do so.

I have several plans for plug-in modules for the editor including a sprite editor, image editor (a very very very very simple editor, use photoshop or paint.net if you want high detail stuff), a font editor and a shader editor (maybe).

FYI, the window will look like that in Windows 7 as well (i.e. no aero glass).  I’ve modified it to look like the Zune window by including a new object in Gorgon.Common.Dll called ZuneForm.  Basically you inherit this form instead of a System.Windows.Forms.Form and then you get a Zune-looking window.

sitelogoSo I’ve been adding examples to the new version of Gorgon for the last week or so.  The latest one shows how to use the new input system to use a Raw Input mouse, keyboard and joystick (if present, and is actually not using Raw Input as such).  It’s a pretty silly example, but shows how to get the input plug-ins loaded, how to create an input factory and how to create the objects used to represent the various input devices.

You want pictures though.  I have one.  And it is here.

Boing!

sitelogoWell, it’s been a while.  I’ve been busy.  You’ve been busy.

Anyway, I actually took some time to test out a piece of functionality for the new version of Gorgon.  This new version of Gorgon will have a graphics API separate from the 2D renderer (the 2D renderer uses the graphics API however).  This is unlike the previous version where the renderer was pretty much all you had access to.  I had a user ask me a long time ago if it were possible to access the underlying renderer to render 3D along with the 2D.  At first, it did not, but I did hack in a way to access SlimDX directly through a plug-in and it was awful.

So, in this version I decided to give the developer access to the full graphics API under the renderer.  This allows the user to switch between 2D graphics and whatever they want.  And here’s the results of my intense labour pain:

Yep, it’s a clone of the old Amiga demo “Boing”.  As you can see, there are 2D elements (the text and the logo) along with the 3D elements (which were all done manually I might add, Gorgon does NOT have a 3D renderer so don’t get too excited).  I’ve decided to include the code as an example program for the new Gorgon.

Rejoice.

.NET 4.5 – Visual Studio 2012

So, I got myself a copy of Visual Studio 2012 Pro.  It’s pretty nice, except for the shitty all-caps menus (which you can turn off with the registry hack located here).  I really didn’t have any plans on moving Gorgon v2.x to .NET 4.5/VS2012 until I saw this:

FINALLY!!

No more PIX! I can barely contain myself.

Continue reading

Windows 8

So I’m trying out Windows 8 (yes, it’s not released to the public, and yes I have it legally).

Dear God, what a mess this whole Metro/desktop thing is.  Someone over at Microsoft must have split personality disorder or something.  How in hell did they think that was a good idea??

Anyway, the OS does have some really nice improvements and it’s very responsive (except when it’s not… I get random freezes once in a while, apparently it’s something to do with my Intel SSD).  And more importantly, after installing VS2010, and the June 2010 DirectX SDK, the new (and presumably old since I haven’t tried it yet) Gorgon works fine.  What I knew, and was hoping I was wrong, is that they took out the D3DX library for the new DirectX, and as such things broke horribly under Gorgon because SharpDX uses the D3DX libraries to load/save textures.  After installing the June 2010 DXSDK, everything worked again, so there’s that.

I really really really don’t like this metro thing.  It’s just horrible with a mouse/keyboard and while I was ambivalent towards the Start Menu in previous versions, I really miss that I can’t group my applications (and I have a lot) under folders.  This made everything really horrible to organize, especially with how obsessive I am about organization on my machine.

That said, the desktop is real nice.  Love the new task manager, love the new copy/delete dialogs.   I even like the new look they put in (they got rid of Aero, or probably more likely, the glass effect).

Sadly, I now have to figure out how in hell I’m going to make Gorgon work without relying on D3DX (yes, I know, I could keep with developing for the June 2010 SDK, but at some point you know they’re going to drop that).  Apparently I can use WIC (Windows Imaging Component), but it looks pretty convoluted and I need something that’ll give me AnyCPU support.

All in all, the awfulness of Windows 8 outweighs its benefits in my opinion.  Someone really needs to kick Ballmer (I blame him wholeheartedly for this mess) out of that company and install someone with a fucking clue (i.e. we don’t all use/want a tablet, nor do we all want to develop for them).

Anyway, I am not dropping support for Windows 7/Vista from Gorgon.  So don’t ask about it.

That’s all for now.  Gorgon is still being worked on, a little, here and there.  It’ll be ready by 2213.

Dual monitor stuff

So here’s a screenshot of the dual monitor code in action:

It’s not much to look at, but it was a major pain in the ass to get working, and does indeed work.  Basically you create 2 forms, and 2 swap chains and set both swap chains to full screen and then add some special code to handle cases where focus is lost/restored on the primary form.

Gorgon would normally handle focus loss to reset your full screen mode for you when focus is returned (this is due to a bug in WinForms and DXGI).  And that’s all well and good, but this code really doesn’t work well with multiple monitor situations.  So, there’s a flag to tell Gorgon to turn off the automatic mode reset on focus, and that will let you, the user, handle the transition when dealing with multiple monitors.  It’s not an ideal situation, but it works

It’s a bit complicated to set up, but there’ll be an example included with Gorgon on how to use dual monitor setups that’ll guide you through the process.

Look at my balls

So, I’ve been quite busy lately with a new job and such.  And as a consequence I haven’t had any time for Gorgon recently.  But I finally sat down this evening and did a little work (not much mind you, and certainly nothing of note) on Gorgon 2.x.

I’ve uploaded the Ball Demo to the site so people can have a look at it.  I’d appreciate any feedback (please post the feedback to the forums, thank you).

Please note the following before running it:

  1. It’ll probably crash.  It’s in development after all.
  2. You NEED Windows Vista Service Pack 2, or Windows 7 (Windows 8 -might- work, but don’t count on it).
  3. It will run on Direct 3D 9 capable video devices.  However, it requires Direct X 11 be installed on the system (hence the OS requirements).

To run it, just run the BallDemo.exe and pray (oh, and ensure that the zip file isn’t ‘blocked’ by Windows, .NET assemblies hate that shit).  It defaults to windowed mode with a resolution of 1280×800 although you can modify the BallDemo.config file to change to a resolution you like.

Let me know what your performance is like.

Issues with installing SlimDX Mar 2009 (2.0.7.41)

Apparently there’s an issue with Gorgon installing SlimDX.  When the installer runs, it is supposed to detect whether the March 2009 SP1 (v2.0.7.41) SlimDX assemblies are installed.  If they are not, then it will install SlimDX for you.  However, it has come to my attention that the Gorgon install has not been installing SlimDX.

The issue is with the March 2009 SP1 SlimDX end user runtime installer (Gorgon runs this when it installs).  Apparently it’s not working, and even though I’ve tried to download it from the SlimDX site it still refuses to run (for me) and claims that the installer is invalid.

If you’re having issues running Gorgon applications because it can’t find the v2.0.7.41 SlimDX assemblies:
Could not load file or assembly ‘SlimDX, Version=2.0.7.41, Culture=neutral, PublicKeyToken=b1b0c32fd1ffe4f9′ or one of its dependencies. The system cannot find the file specified.

Then install the SlimDX March 2009 SP1 Developer SDK from here and all should be well again.