
Stencil buffer difference between Windows OpenGL and Android OpenGL ES 2
Posted Thursday, 20 September, 2012 - 08:03 by kuma inHi,
my name is Fabio and I have a problem.
With same code I have different result, in Windows work fine but in Android I have the mask inverted.
GL.Enable(EnableCap.StencilTest); GL.Clear(ClearBufferMask.StencilBufferBit); GL.StencilFunc(StencilFunction.Never, 1, 1); GL.StencilOp(StencilOp.Replace, StencilOp.Replace, StencilOp.Replace); GL.ColorMask(false, false, false, false); base.OnRender(delta, Transform); GL.StencilFunc(StencilFunction.Equal, 1, 1); GL.StencilOp(StencilOp.Keep, StencilOp.Keep, StencilOp.Keep); GL.ColorMask(true, true, true, true); if (_font != null) for (int c = 0; c < BufferListIndex.Count; c++) { int x = BufferListIndex[c]; //------------------------------------ _font.ArrayChars[x].Tex.BindTexture(); base.OnRender(delta, Transform.Childs[c]); _font.ArrayChars[x].Tex.Unbind(); } GL.Disable(EnableCap.StencilTest);
ps:the image attached is windows version
Why OpenGL ES 2.0 don't work fine?
thanks


Comments
Re: Stencil buffer difference between Windows OpenGL and ...
Whats the Vendor/Renderer/Version strings for the Android platform?
You don't set GL.StencilMask anywhere in this code, rather set it to a known value. Also GL ES 2.0 seems to lack GL.StencilClear(), find it's equivalent and set it's initial value too.
Re: Stencil buffer difference between Windows OpenGL and ...
Hi Inertia,
vendor: qualcomm
driver:opengl es 2.0 1566933
render: adreno 205
(I tried also another device with render mali 400 with equal results)
last version of "Mono for android"
I have change first lines code:
but I have equal problems :(
thank you for your help.
Re: Stencil buffer difference between Windows OpenGL and ...
The imports for StencilMask are ok (and OpenTK actually uses a tool to generate GL bindings to avoid such type errors). The only other idea I have is that you manually select which overload to use (there's int32 and uint32 overloads on all functions to satisfy CLS compliance. Like:
StencilMask( (uint)mask );).If you can rule out GL errors you may have to contact Xamarin or the driver programmers, they can help you.
Re: Stencil buffer difference between Windows OpenGL and ...
I tried the overload methods but I have the same result.
I just signaled this bug to xamarin.
thank you.