gdkchan / Ohana3DS-Rebirth

WIP new version of Ohana3DS in C#.
179 stars 40 forks source link

Broken shaders/3D Viewport when Windows Aero is turned off on Windows 7 x64... #2

Closed ApacheThunder closed 9 years ago

ApacheThunder commented 9 years ago

Model viewport is still broken with Ohana-Rebirth. It's really disappointing since this program is going to have a lot more useful features then original Ohana.

I'm not sure what other graphics cards this issue might arise on, but on my machine with Windows 7 64bit with Nvidia GTX 650, the 3D view port doesn't show anything. I can load BCH files just fine. But I can't see anything. I can view the textures in the texture section, but that's about it. I'm on latest drivers and I know for sure I'm not missing any DirectX components.

Perhaps provide a way of using older shaders? The latest build finally will compile for me. I might have had a few .NET installations missing so that might have been why Ohana wasn't compiling for me. :P

Well it is now. :D

EDIT: I've narrowed down the issue. The viewport works if Windows Aero is turned on. I normally have it off. Not sure if this problem is just something odd with my OS configuration or an issue that could be effecting more users. Investigate if anyone else on Windows 7 64bit (specifically Windows 7 Ultimate edition on a Nvidia graphics card with DX11 support)

gdkchan commented 9 years ago

Blank viewport isn't a shader issue. The Fragment shader can be disabled by setting "useLegacyTexturing" inside "RenderEngine.cs" to true. I just left it disabled for now. Disabling the fragment shader break textures for some models through.

A friend of mine with a GTX650 card tested it and the model worked. Only issue was with the fragment shader (model was all white), but it was working.

Unfortunately I don't know what is causing the blank viewport issue yet, since it doesn't throw any error or smth.

ApacheThunder commented 9 years ago

Hmm that doesn't seem to solve the problem. I checked the code. It's already set to true. You mean this code on line 39 yes?

private bool useLegacyTexturing = true; //Set to True to disable Fragment Shader

It's already set to true. If I change it to false, it has no effect. I still don't see anything in the viewport.

ApacheThunder commented 9 years ago

Found the issue. Windows Aero being enabled allows the viewport to work correctly. However I normally have it off. When it's off, viewport does not refresh (remains dark grey) and dragging the window around is buggy. :(

gdkchan commented 9 years ago

yes, I discovered it right now. I enabled WS_EX_COMPOSITED flag to Double Buffer and reduce flickering on the window. But it only works with Aero enabled. Just need to remove this code on OForm.cs.

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000; //Turn on WS_EX_COMPOSITED
            return cp;
        }
    }

Ill fix it today. Thanks :)