public void RenderModel(Model model, Matrix4 viewMatrix) { Debug.Assert(model != null); if (!RenderEnabled) { return; } BufferData(model.GetVerts(), model.GetColorData(), model.GetTextureCoords(), model.GetIndices(), IboElements); if (_activeShader.GetUniform("UVMatrix") != -1) { Matrix4 UVMatrix = model.TransformUv.GetMatrix(); GL.UniformMatrix4(_activeShader.GetUniform("UVMatrix"), false, ref UVMatrix); } if (model.Texture != null) { GL.Uniform1(_activeShader.GetUniform("isTextured"), 1); GL.BindTexture(TextureTarget.Texture2D, model.Texture.GetId()); } else { GL.Uniform1(_activeShader.GetUniform("isTextured"), 0); GL.BindTexture(TextureTarget.Texture2D, -1); } if (model.Wireframe) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); SetEnable(EnableCap.CullFace, false); } if (model.IsTransparent) { SetEnable(EnableCap.Blend, true); } RenderSetTransformMatrix(Matrix4.Identity, model, viewMatrix); GL.DrawElements(PrimitiveType.Triangles, model.GetIndices().Length, DrawElementsType.UnsignedInt, 0); if (model.Wireframe) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); SetEnable(EnableCap.CullFace, true); } if (model.IsTransparent) { SetEnable(EnableCap.Blend, false); } }