public void DrawModel() { int width = Controls[(SoftwareRendering ? 2 : 1)].Width; int height = Controls[(SoftwareRendering ? 2 : 1)].Height; Array.Copy(checkerboard, pixel_buffer, pixel_buffer.Length); DrawingArea.initDrawingArea(height, width, pixel_buffer); Rasterizer.method364(); bool success = false; if (SelectedModel != null) { try { int k3 = Rasterizer.center_x; int j4 = Rasterizer.center_y; Rasterizer.center_x = c_x + DrawingArea.width / 2; Rasterizer.center_y = c_y + DrawingArea.height / 2; while (Yaw < 0) { Yaw += Model.SIN.Length; } while (Pitch < 0) { Pitch += Model.COS.Length; } while (Roll < 0) { Roll += Model.COS.Length; } Yaw %= Model.SIN.Length; Pitch %= Model.COS.Length; Roll %= Model.COS.Length; int i5 = Rasterizer.SIN[Yaw] * c_z >> 16; int l5 = Rasterizer.COS[Yaw] * c_z >> 16; bool animated = false; //interfaceIsSelected(class9_1); int i7; /*if (animated) * i7 = class9_1.anInt258; * else * i7 = class9_1.anInt257; * Model model; * if (i7 == -1) * { * model = class9_1.method209(-1, -1, animated); * } * else * { * Animation animation = Animation.anims[i7]; * model = class9_1.method209(animation.anIntArray354[class9_1.anInt246], animation.anIntArray353[class9_1.anInt246], animated); * }*/ if (SelectedModel != null) { SelectedModel.Render(Pitch, Roll, Yaw, 0, i5, l5); } Rasterizer.center_x = k3; Rasterizer.center_y = j4; if (!SoftwareRendering) { Gl.glClearColor(.5f, 1, 1, 1); Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); Gl.glOrtho(0, width, 0, height, -1, 1); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glViewport(0, 0, width, height); Gl.glTexSubImage2D(Gl.GL_TEXTURE_2D, 0, 0, 0, width, height, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE, DrawingArea.pixels); Gl.glBegin(Gl.GL_QUADS); Gl.glTexCoord2d(0.0, 1.0); Gl.glVertex2d(0.0, 0.0); Gl.glTexCoord2d(1.0, 1.0); Gl.glVertex2d(width, 0.0); Gl.glTexCoord2d(1.0, 0.0); Gl.glVertex2d(width, height); Gl.glTexCoord2d(0.0, 0.0); Gl.glVertex2d(0.0, height); Gl.glEnd(); gl_control.Invalidate(); } else { software_control.Image = DrawingArea.ToBitmap(); } success = true; } catch (Exception) { success = false; } } else { Controls[(SoftwareRendering ? 2 : 1)].Visible = false; Controls[0].Visible = true; this.Invalidate(); } if (!success) { Controls[(SoftwareRendering ? 2 : 1)].Visible = false; Controls[0].Visible = true; if (!SoftwareRendering) { gl_control.Invalidate(); } else { software_control.Invalidate(); } } else { Controls[(SoftwareRendering ? 2 : 1)].Visible = true; Controls[0].Visible = false; } }