public override void Load() { // These operations need to be performed on the GL thread. // This can be further optimized by creating the objects on another thread and then just passing them. GLThread.ExecuteGLThread(() => { // Create a new map buffer. _buffer = new QuadMapBuffer(Renderer.MaxRenderable); // Map buffer. int x = 0; int y = 0; const int size = 5; for (int i = 0; i < Renderer.MaxRenderable; i++) { // Add objects one after another of a random color. Color randomColor = new Color(Utilities.GenerateRandomNumber(0, 255), Utilities.GenerateRandomNumber(0, 255), Utilities.GenerateRandomNumber(0, 255)); _buffer.MapNextQuad(new Vector3(x * size, y * size, 1), new Vector2(size, size), randomColor); x++; if (x * size < 960) { continue; } x = 0; y++; } }); }
internal Renderer() { // Renderer bootstrap. Debugger.Log(MessageType.Info, MessageSource.Renderer, "Loading Emotion OpenTK-GLES Renderer..."); Debugger.Log(MessageType.Info, MessageSource.Renderer, "GL: " + GL.GetString(StringName.Version) + " on " + GL.GetString(StringName.Renderer)); Debugger.Log(MessageType.Info, MessageSource.Renderer, "GLSL: " + GL.GetString(StringName.ShadingLanguageVersion)); // Set execution flags, used for workarounding different GPU behavior. SetFlags(); // Create default shaders. This also sets some shader flags. CreateDefaultShaders(); // Create a default program, and use it. ShaderProgram defaultProgram = new ShaderProgram((Shader)null, null); defaultProgram.Bind(); // Create objects. Camera = new CameraBase(new Vector3(0, 0, 0), new Vector2(Context.Settings.RenderWidth, Context.Settings.RenderHeight)); MatrixStack = new TransformationStack(); // Setup main map buffer. _mainBuffer = new QuadMapBuffer(MaxRenderable); _mainLineBuffer = new LineMapBuffer(MaxRenderable); // Check if the setup encountered any errors. Helpers.CheckError("renderer setup"); // Setup additional GL arguments. GL.Enable(EnableCap.Blend); GL.DepthFunc(DepthFunction.Lequal); GL.Enable(EnableCap.DepthTest); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); // Setup debug. SetupDebug(); }