FNA-XNA / FNA

FNA - Accuracy-focused XNA4 reimplementation for open platforms
https://fna-xna.github.io/
2.59k stars 261 forks source link

SpriteBatch/Texture2D corruption #32

Closed ghost closed 8 years ago

ghost commented 8 years ago

A customer just reported this weird graphical bug in Shipwreck:

1xptat0

The top row of images show some missing gaps and the bottom row seems to show us rendering the entire sprite sheet into the image.

I've not been able to reproduce it but here's the info I have from my log:

FNA version: 16.5.5.0 OS: Microsoft Windows NT 5.1.2600 Dodatek Service Pack 3 (Windows XP 32 bit) OpenGL Device: GeForce 6150SE nForce 430/integrated/SSE2/3DNOW! OpenGL Driver: 2.1.2 OpenGL Vendor: NVIDIA Corporation MojoShader Profile: glsl120

Shipwreck loads data from a custom format and uses Texture2D.SetData to create textures. From there we just use normal SpriteBatch with its default shaders to draw everything. We do use a RenderTarget2D to draw the game at its native low resolution before rendering it scaled up to the back buffer.

I've not seen this on any of my operating systems nor have I heard about anyone else having this issue. If there's more I can do to assist, let me know.

flibitijibibo commented 8 years ago

A 6150SE on Windows XP?! Hoooly shiiiiiiiii

But seriously though, I don't even think this card is supported on XNA Reach...? Posts about the card appear to advertise Shader Model 3.0 support as if it's a novelty. o_o

The best I can recommend is making sure you don't have any unused depth buffers, and if needed, giving them a special build that removes the added RenderTarget2D, so that the game doesn't reference EXT_framebuffer_object at all (which I imagine the game is using instead of the more complete ARB_framebuffer_object), but if you do manage to get it running, I'd go as far as saying that's a demoscene-tier accomplishment.

ghost commented 8 years ago

Well if it's going to be a ton of work I think I'll just put this in the "not supported" category and recommend they get a Steam refund. That sounds like far too much work to support some old hardware. Thanks for the input; I had no idea what I was dealing with.

flibitijibibo commented 8 years ago

Yeah, the card is so old that even Mesa doesn't have it maintained past 10.x (see NVIDIA NV4x):

https://people.freedesktop.org/~imirkin/glxinfo/glxinfo.html#p=compat&v=Mesa%2010.6.0

Usually I can get users of older GPUs to look at Linux for Mesa's OpenGL support, but at best Mesa will only give some stability improvements... even Mesa couldn't get ARB_framebuffer_object in for the poor thing :(