void DrawOpenGL(int choice) { Debug.Log($"DrawOpenGL({choice})"); /* Loop until the user closes the window */ { switch (choice) { case 1: GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); GL.glBegin(GL.GL_TRIANGLES); // GL.glColor3f(r,g,b); float rnd = 0.5f; GL.glVertex2f(-rnd, -rnd); GL.glVertex2f(0f, rnd); GL.glVertex2f(rnd, -rnd); GL.glEnd(); break; case 2: GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); //GL.glfwGetFramebufferSize(_windowHandle, &width, &height); float ratio = width / (float)height; // glViewport(0, 0, width, height); GL.glMatrixMode(GL.GL_PROJECTION); GL.glLoadIdentity(); GL.glOrtho(-ratio, ratio, -1f, 1f, 1f, -1f); GL.glMatrixMode(GL.GL_MODELVIEW); GL.glLoadIdentity(); GL.glRotatef((float)GL.glGetTime() * 50f, 0f, 0f, 1f); GL.glBegin(GL.GL_TRIANGLES); GL.glColor3f(1f, 0f, 0f); GL.glVertex3f(-0.6f, -0.4f, 0f); GL.glColor3f(0f, 1f, 0f); GL.glVertex3f(0.6f, -0.4f, 0f); GL.glColor3f(0f, 0f, 1f); GL.glVertex3f(0f, 0.6f, 0f); GL.glEnd(); break; } //GL.glFlush(); } }
// Update is called once per frame void Update() { if (Input.GetKey(KeyCode.D)) { float r = Random.Range(0f, 1f); float g = Random.Range(0f, 1f); float b = Random.Range(0f, 1f); OpenGLDriver.SwapBuffers(() => DrawOpenGL(1)); } if (Input.GetKey(KeyCode.E)) { OpenGLDriver.SwapBuffers(() => DrawOpenGL(2)); } uint currentFrameBuffer = GL.GetCurrentFrameBuffer(); var texture = randomTexture2D(10, 10); _rendererComponent.material.SetTexture("_EmissionMap", texture); }