Hello,
I’ve written a relatively simple pixel shader in HLSL which works perfectly fine under Windows DX. When I use the same shader under Linux, everything else turns red (even though the shader is unset by calling SpriteBatch.End()). After some fiddling I discovered that this bug (?) can be fixed by adding a vertex shader. Using the simplest vertex shader
float4 vs(float4 pos : SV_Position) : SV_Position
{
return pos;
}
produces some weird results though (see screenshots below).
When I copy the default SpriteEffect vertex shader it doesn’t draw anything…
The SpriteBatch is definetely set up correctly, because it does not apply Matrix transformation when I correctly define MatrixTransform, which of course happend because it then uses my defined Matrix instead of its own implemented one.
My questions:
- Can I use an effect without vertex shader in linux (would be an optimal solution)?
- How do I correctly define a SpriteBatch-Default VertexShader that works in Windows and Linux?
- Is it actually a bug that everything is drawn red when using an effect without vertex shader under Linux? (Probably is, as someone has reported it earlier Link)
Screenshots:
How it should look:
How it looks with the simple shader shown above:
Plus when I move around (which is implemented using a SpriteBatch Matrix Transform) it starts to work in a small area of the “map” and goes crazy/doesn’t show in others…
Don’t currently have a screenshot from the linux problem, it looks basically like the first one but the bar and the line are both plain red.
Thank you in advance for any answers/suggestions!