# OpenGL Is XNA for me?

This topic is 3223 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I've been on a cross platform crusade for a while now, but I think XNA may change that. I finally took a look at XNA and it looks much simpler than working with DirectX directly. I'm working on an online game right now and I've mostly been working with the server at this point. But, now I'm in the process of figuring out what I'm going to do with the client. The game is going to be 2d, so I'm always scared to use a 3d engine for a 2d project. Furthermore, the game is going to be isometric and some 2d engines are too high level and don't allow isometric to be implemented easily. I'm thinking about using TorqueX (I know -- ironic), would this be a good choice? I'm so busy with the server that I need something very easy to visualize what's going on there. I'm looking to be able to create a lot of nice visual effects with lighting and shadows (eventually). Does TorqueX have support for things like this? So, what do you think about XNA? Is it simple enough that I can get a simple client running without too much effort? Or would I need an engine to do that? Is TorqueX suitable for this? I think I want to use XNA because I want to do a lot of things with lighting and shadows and DirectX always seemed better than OpenGL in this sort of thing.

##### Share on other sites
I've been playing with XNA a little in my spare time over the past few weeks and I personally can't get over how easy everything is.

I picked up the O'Reilly book "Learning XNA 3.0" which covers 2D and 3D game programming. I'm actually surprised how small this book is, but when it comes down to it, there really isn't much involved in getting your graphics on screen with XNA regardless of whether it's 2D or 3D.

I've never personally had any luck getting anything even remotely looking like an image coming out of my Direct X code (I've never put enough time into it), but some of the XNA stuff can be produced in just a few minutes. I'm personally very impressed with it.

John

##### Share on other sites
to answer your " is this and that possible with torque " questions,
torque 3D features etc
torque 2D features etc

yes XNA (and I heard Torque as well) is very nice if you want an easy and fast production enviroment. Do bear in mind that to support XBOX360 forget about using advanced extra libraries such as FMOD etc.

##### Share on other sites
Quote:
 Original post by borngamerI've been playing with XNA a little in my spare time over the past few weeks and I personally can't get over how easy everything is.I picked up the O'Reilly book "Learning XNA 3.0" which covers 2D and 3D game programming. I'm actually surprised how small this book is, but when it comes down to it, there really isn't much involved in getting your graphics on screen with XNA regardless of whether it's 2D or 3D.I've never personally had any luck getting anything even remotely looking like an image coming out of my Direct X code (I've never put enough time into it), but some of the XNA stuff can be produced in just a few minutes. I'm personally very impressed with it.John

Yeah great XNA 3 book. I just picked up a copy and it's straightforward and covers all the basics to get anyone with knowledge of C# up and running.

##### Share on other sites
XNA looks too good to be true at this point. I'm fooling around with FlatRedBall and it's hard for me to believe how simple it was to follow the asteroids game tutorial. It seems like it's easier than Game Maker, to be honest.

I plan on having a lot of shading, lighting and particle effects. Since this is only 2d, I assume that any major XNA engine should handle this fine. FlatRedBall is the best I've been able to find for my situation. Does anyone know of anything better?

I'd really like to have a tiling editor. I could make one myself, but, like I said, I have too much on my plate right now. Does anyone know of a good tile editor that will work with XNA? Preferably one that works well with isometric tiles (I've never even seen a good isometric editor before, to be honest).

I'd thought about XNA a couple times before, but I always figured it would be like DirectX and be too much work. I really can't believe how easy XNA is. I'm very impressed so far.

##### Share on other sites
One thing I do really like about XNA is the stability, although a lot of that is the C# element of it. I write a lot of interactive graphics and system control stuff that uses XNA and mostly 2D elements which are really easy. This code is often running months on end and I can honestly say that once the obvious bugs are out the crash rate is basically zero. (And this is on code written very quickly)

##### Share on other sites
I never did anything 3D with either direct X or XNA, but for 2D, i found XNA to be pretty easy. It removes a lot of the little tasks needed directX, such has handling alt-tab, setting up a game loop for you, easy to use and decently featured objects to handles music and sounds, and best of all, xbox360 compatibility.

##### Share on other sites
I'm writing a 2D game with XNA now. It's not isometric and their 2D support is poor...but it is easy to use and I've built an entire game on top of it. Sure I want to replace it with code that approaches the rendering differently, but I haven't needed to. There's a lot to be said for that already.

I like XNA 3.0. There's a lot of decisions I don't agree with -- hell, I wrote its competitor -- but overall I have a very favorable impression of the library.

##### Share on other sites
The best choice you can make is to play around with a bunch of the different SDK's. I prefer XNA

##### Share on other sites
Quote:
 Original post by yahnXNA looks too good to be true at this point. I'm fooling around with FlatRedBall and it's hard for me to believe how simple it was to follow the asteroids game tutorial. It seems like it's easier than Game Maker, to be honest.I plan on having a lot of shading, lighting and particle effects. Since this is only 2d, I assume that any major XNA engine should handle this fine. FlatRedBall is the best I've been able to find for my situation. Does anyone know of anything better?I'd really like to have a tiling editor. I could make one myself, but, like I said, I have too much on my plate right now. Does anyone know of a good tile editor that will work with XNA? Preferably one that works well with isometric tiles (I've never even seen a good isometric editor before, to be honest).I'd thought about XNA a couple times before, but I always figured it would be like DirectX and be too much work. I really can't believe how easy XNA is. I'm very impressed so far.

Well, if you ever messed with it's predecessor, MDX(managed DX), it is alot more like DirectX and therefore more work. Microsoft has been putting alot of work into XNA and it shows in the latest version.

##### Share on other sites
Quote:
 Original post by yahnI'm thinking about using TorqueX (I know -- ironic), would this be a good choice? I'm so busy with the server that I need something very easy to visualize what's going on there.

TorqueX makes things more difficult IMO. I'd recommend just going ahead and writing your own engine using the XNA Framework. I haven't seen too many iso games done using XNA GS but you'll get something up and running in hours if you have any kind of game dev experience.

##### Share on other sites
Quote:
Original post by Machaira
Quote:
 Original post by yahnI'm thinking about using TorqueX (I know -- ironic), would this be a good choice? I'm so busy with the server that I need something very easy to visualize what's going on there.

TorqueX makes things more difficult IMO. I'd recommend just going ahead and writing your own engine using the XNA Framework. I haven't seen too many iso games done using XNA GS but you'll get something up and running in hours if you have any kind of game dev experience.

the good thing about this is that you get to know the actual XNA framework and it's way of working, as well as the structure of your engine, which is a good thing as well... It's a bit more work and learning, but it might payoff in the end, if you already have experience writing engines.

You will need to implement lighting, shadowing or whatever fancy feature you want yourself though, but links like creators club and ziggyware have resources enough available on these subjects!

I also have to agree with what Armadon said, it depends a lot on personal taste as well, so best would be to download engines or SDK's and play with them, to see what you prefer, before throwing yourself at one SDK, making it very possible you wanna change sooner or later.

##### Share on other sites
Quote:
 I also have to agree with what Armadon said, it depends a lot on personal taste as well, so best would be to download engines or SDK's and play with them, to see what you prefer, before throwing yourself at one SDK, making it very possible you wanna change sooner or later.

Ideally, I would have the time to do that. But I really don't. I've messed around with XNA a little bit more and I still can't believe how smoothly everything is going.

The one major drawback at this point is XACT. First of all, my game has a lot of music. If I decompress all the OGGs, the game size is going to be ridiculous. That would be like having to use BMPs instead of PNGs.

Furthermore, I don't like having to "build" this XACT file every time I want to add a sound to the game. But, one of the most promising things about XNA is the ability to play on the XBOX, and without XACT that's impossible, so I don't want to use something else.

Maybe I'll get used to it. Does anyone have an opinion on XACT?

i'm in the middle of porting my dx10 engine to xna, including physics... I'm about 80% done and it only took me 1 week! And it was so satisfying seeing my game on the 360... really cool... it just took me a whole day to figure out the ref keyord :$... but I ported the physics code in no time and it's much nicer in C#... frame rates with parallex mapping and per-pixel lighting is really good... I also feel like it's "Too Good To Be True." #### Share this post ##### Link to post ##### Share on other sites Quote: Original post by yahn Quote:  I also have to agree with what Armadon said, it depends a lot on personal taste as well, so best would be to download engines or SDK's and play with them, to see what you prefer, before throwing yourself at one SDK, making it very possible you wanna change sooner or later. Ideally, I would have the time to do that. But I really don't. I've messed around with XNA a little bit more and I still can't believe how smoothly everything is going. The one major drawback at this point is XACT. First of all, my game has a lot of music. If I decompress all the OGGs, the game size is going to be ridiculous. That would be like having to use BMPs instead of PNGs. Furthermore, I don't like having to "build" this XACT file every time I want to add a sound to the game. But, one of the most promising things about XNA is the ability to play on the XBOX, and without XACT that's impossible, so I don't want to use something else. Maybe I'll get used to it. Does anyone have an opinion on XACT? Well XACT is one of the things i find horrible about XNA. I myself prefer dynamic sounds, dynamic sound playback, dynamic loading and that sort of things. But i guess there's no choise if you want to create something on the XBOX anyways ;-) does XNA 3.0 still have the same XACT as XNA 1.0? Quote:  Original post by vetroXLi'm in the middle of porting my dx10 engine to xna, including physics... I'm about 80% done and it only took me 1 week! And it was so satisfying seeing my game on the 360... really cool... it just took me a whole day to figure out the ref keyord :$ ... but I ported the physics code in no time and it's much nicer in C#... frame rates with parallex mapping and per-pixel lighting is really good... I also feel like it's "Too Good To Be True."

btw if you want to use C# but don't want to loose DX10 you can use SlimDX as well, but of course that does not run on the Xbox. Just so you know, a friendly tip :)

##### Share on other sites
Quote:
 Well XACT is one of the things i find horrible about XNA. I myself prefer dynamic sounds, dynamic sound playback, dynamic loading and that sort of things. But i guess there's no choise if you want to create something on the XBOX anyways ;-)does XNA 3.0 still have the same XACT as XNA 1.0?

This is getting to be unrealistic. An average track in my game turns out to be a 20MB Wave file. I can't have a 600MB WaveBank file that could be less than 50MB of compressed OGGs. How do any XBOX 360 games fit on a DVD? Games like Bio Shock have to have close to 5GB just in audio. That is absurd.

##### Share on other sites
Quote:
 Original post by yahnAn average track in my game turns out to be a 20MB Wave file. I can't have a 600MB WaveBank file that could be less than 50MB of compressed OGGs. How do any XBOX 360 games fit on a DVD?
They use xWMA compression, not silly ADPCM. Not sure if XNA lets you use xWMA yet. (And the 360 can actually decompress xWMA in hardware, so audio playback is beautifully efficient.)

##### Share on other sites
For what its worth: I have yet to build for the 360, but building a game for windows under XNA 3.0 compresses the audio to WMA files with three levels of compress you can set under properties.

• 12
• 10
• 11
• 18
• 13
• ### Similar Content

• By QQemka
Hello. I am coding a small thingy in my spare time. All i want to achieve is to load a heightmap (as the lowest possible walking terrain), some static meshes (elements of the environment) and a dynamic character (meaning i can move, collide with heightmap/static meshes and hold a varying item in a hand ). Got a bunch of questions, or rather problems i can't find solution to myself. Nearly all are deal with graphics/gpu, not the coding part. My c++ is on high enough level.
Let's go:
Heightmap - i obviously want it to be textured, size is hardcoded to 256x256 squares. I can't have one huge texture stretched over entire terrain cause every pixel would be enormous. Thats why i decided to use 2 specified textures. First will be a tileset consisting of 16 square tiles (u v range from 0 to 0.25 for first tile and so on) and second a 256x256 buffer with 0-15 value representing index of the tile from tileset for every heigtmap square. Problem is, how do i blend the edges nicely and make some computationally cheap changes so its not obvious there are only 16 tiles? Is it possible to generate such terrain with some existing program?
Collisions - i want to use bounding sphere and aabb. But should i store them for a model or entity instance? Meaning i have 20 same trees spawned using the same tree model, but every entity got its own transformation (position, scale etc). Storing collision component per instance grats faster access + is precalculated and transformed (takes additional memory, but who cares?), so i stick with this, right? What should i do if object is dynamically rotated? The aabb is no longer aligned and calculating per vertex min/max everytime object rotates/scales is pretty expensive, right?
Drawing aabb - problem similar to above (storing aabb data per instance or model). This time in my opinion per model is enough since every instance also does not have own vertex buffer but uses the shared one (so 20 trees share reference to one tree model). So rendering aabb is about taking the model's aabb, transforming with instance matrix and voila. What about aabb vertex buffer (this is more of a cosmetic question, just curious, bumped onto it in time of writing this). Is it better to make it as 8 points and index buffer (12 lines), or only 2 vertices with min/max x/y/z and having the shaders dynamically generate 6 other vertices and draw the box? Or maybe there should be just ONE 1x1x1 cube box template moved/scaled per entity?
What if one model got a diffuse texture and a normal map, and other has only diffuse? Should i pass some bool flag to shader with that info, or just assume that my game supports only diffuse maps without fancy stuff?
There were several more but i forgot/solved them at time of writing
• By RenanRR
Hi All,
I'm reading the tutorials from learnOpengl site (nice site) and I'm having a question on the camera (https://learnopengl.com/Getting-started/Camera).
I always saw the camera being manipulated with the lookat, but in tutorial I saw the camera being changed through the MVP arrays, which do not seem to be camera, but rather the scene that changes:
#version 330 core layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; out vec2 TexCoord; uniform mat4 model; uniform mat4 view; uniform mat4 projection; void main() { gl_Position = projection * view * model * vec4(aPos, 1.0f); TexCoord = vec2(aTexCoord.x, aTexCoord.y); } then, the matrix manipulated:
..... glm::mat4 projection = glm::perspective(glm::radians(fov), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); ourShader.setMat4("projection", projection); .... glm::mat4 view = glm::lookAt(cameraPos, cameraPos + cameraFront, cameraUp); ourShader.setMat4("view", view); .... model = glm::rotate(model, glm::radians(angle), glm::vec3(1.0f, 0.3f, 0.5f)); ourShader.setMat4("model", model);
So, some doubts:
- Why use it like that?
- Is it okay to manipulate the camera that way?
-in this way, are not the vertex's positions that changes instead of the camera?
- I need to pass MVP to all shaders of object in my scenes ?

What it seems, is that the camera stands still and the scenery that changes...
it's right?

Thank you

• Sampling a floating point texture where the alpha channel holds 4-bytes of packed data into the float. I don't know how to cast the raw memory to treat it as an integer so I can perform bit-shifting operations.

int rgbValue = int(textureSample.w);//4 bytes of data packed as color
// algorithm might not be correct and endianness might need switching.
vec3 extractedData = vec3(  rgbValue & 0xFF000000,  (rgbValue << 8) & 0xFF000000, (rgbValue << 16) & 0xFF000000);
extractedData /= 255.0f;

• While writing a simple renderer using OpenGL, I faced an issue with the glGetUniformLocation function. For some reason, the location is coming to be -1.
Anyone has any idea .. what should I do?

• Hi all!
I try to use the Sun shafts effects via post process in my 3DEngine, but i have some artefacts on final image(Please see attached images).
The effect contains the following passes:
1) Depth scene pass;
2) "Shafts pass" Using DepthPass Texture + RGBA BackBuffer texture.
3) Shafts pass texture +  RGBA BackBuffer texture.
Shafts shader for 2 pass:
// uniform sampler2D FullSampler; // RGBA Back Buffer uniform sampler2D DepthSampler; varying vec2 tex; #ifndef saturate float saturate(float val) {     return clamp(val, 0.0, 1.0); } #endif void main(void) {     vec2 uv = tex;     float sceneDepth = texture2D(DepthSampler, uv.xy).r;     vec4  scene        = texture2D(FullSampler, tex);     float fShaftsMask     = (1.0 - sceneDepth);     gl_FragColor = vec4( scene.xyz * saturate(sceneDepth), fShaftsMask ); } final shader:
// uniform sampler2D FullSampler; // RGBA Back Buffer uniform sampler2D BlurSampler; // shafts sampler varying vec4 Sun_pos; const vec4    ShaftParams = vec4(0.1,2.0,0.1,2.0); varying vec2 Tex_UV; #ifndef saturate  float saturate(float val) {     return clamp(val, 0.0, 1.0); } #endif vec4 blendSoftLight(vec4 a, vec4 b) {   vec4 c = 2.0 * a * b + a * a * (1.0 - 2.0 * b);   vec4 d = sqrt(a) * (2.0 * b - 1.0) + 2.0 * a * (1.0 - b);       // TODO: To look in Crysis what it the shit???   //return ( b < 0.5 )? c : d;   return any(lessThan(b, vec4(0.5,0.5,0.5,0.5)))? c : d; } void main(void) {     vec4 sun_pos = Sun_pos;     vec2    sunPosProj = sun_pos.xy;     //float    sign = sun_pos.w;     float    sign = 1.0;     vec2    sunVec = sunPosProj.xy - (Tex_UV.xy - vec2(0.5, 0.5));     float    sunDist = saturate(sign) * saturate( 1.0 - saturate(length(sunVec) * ShaftParams.y ));     sunVec *= ShaftParams.x * sign;     vec4 accum;     vec2 tc = Tex_UV.xy;     tc += sunVec;     accum = texture2D(BlurSampler, tc);     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.875;     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.75;     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.625;     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.5;     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.375;     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.25;     tc += sunVec;     accum += texture2D(BlurSampler, tc) * 0.125;     accum  *= 0.25 * vec4(sunDist, sunDist, sunDist, 1.0);           accum.w += 1.0 - saturate(saturate(sign * 0.1 + 0.9));     vec4    cScreen = texture2D(FullSampler, Tex_UV.xy);           vec4    cSunShafts = accum;     float fShaftsMask = saturate(1.00001 - cSunShafts.w) * ShaftParams.z * 2.0;              float fBlend = cSunShafts.w;     vec4 sunColor = vec4(0.9, 0.8, 0.6, 1.0);     accum =  cScreen + cSunShafts.xyzz * ShaftParams.w * sunColor * (1.0 - cScreen);     accum = blendSoftLight(accum, sunColor * fShaftsMask * 0.5 + 0.5);     gl_FragColor = accum; } Demo project:
Demo Project