我有用两种不同语言编写的 SpriteBatch 版本:
Java: http: //pastebin.com/7gwHBTXi C#: http: //pastebin.com/cTFn26H8
它们具有相同的代码,并且都在一个简单的程序中进行以下调用:
爪哇:
GL11.glViewport(0, 0, game.getWidth(), game.getHeight());
GL11.glClearColor(0, 1, 0, 1);
GL11.glClearDepth(1.0);
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
sb.Begin();
sb.Draw(tex, new Vector2(-0.5f, 0.5f), new Vector2(1, -1), Color.White, 0);
sb.End(SpriteSortMode.None);
sb.RenderBatch(new Matrix4(), new Matrix4(), BlendState.Opaque, SamplerState.PointWrap, DepthState.None, RasterizerState.CullNone);
C#:
GL.Viewport(0, 0, game.Width, game.Height);
GL.ClearColor(0, 1, 0, 1);
GL.ClearDepth(1.0);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
sb.Begin();
sb.Draw(tex, new Vector2(-0.5f, 0.5f), new Vector2(1, -1), Color.White);
sb.End(SpriteSortMode.None);
sb.RenderBatch(Matrix4.Identity, Matrix4.Identity, BlendState.Opaque, SamplerState.PointWrap, DepthState.None, RasterizerState.CullNone);
它们的 OpenGL 上下文完全相同(3.3)。
但是,C# 版本做了它应该做的事情(绘制一个白色矩形),但 Java 版本什么都不做(只有绿色背景)。谁能告诉我有什么区别?什么不工作?谢谢你。我已经坚持了三个星期。