void DrawQuad(GraphicsInterface GI, float left, float top, float right, float bottom) { GI.PushMatrix(); GI.Rotate(Rotation); GI.Drawing.Quads.Begin(); // Left bottom GI.TexCoord(0.0f, 0.0f); GI.Vertex(left, bottom, 0.0f); // Left top GI.TexCoord(0.0f, 1.0f); GI.Vertex(left, top, 0.0f); // Right top GI.TexCoord(1.0f, 1.0f); GI.Vertex(right, top, 0.0f); // Right bottom GI.TexCoord(1.0f, 0.0f); GI.Vertex(right, bottom, 0.0f); GI.Drawing.Quads.End(); GI.PopMatrix(); }
protected override void RenderContent(GraphicsInterface gi) { int p1, p2, p3; for (int i = 0; i < triangles.Length; i++) { p1 = triangles[i].p1; p2 = triangles[i].p2; p3 = triangles[i].p3; gi.Color(1, 1, 1, 0.95f); gi.Drawing.Triangles.Begin(); gi.Normal(normals[p1]); gi.TexCoord(uvMap[p1, 0], uvMap[p1, 1]); gi.Vertex(positions[p1]); gi.Normal(normals[p2]); gi.TexCoord(uvMap[p2, 0], uvMap[p2, 1]); gi.Vertex(positions[p2]); gi.Normal(normals[p3]); gi.TexCoord(uvMap[p3, 0], uvMap[p3, 1]); gi.Vertex(positions[p3]); gi.Drawing.Triangles.End(); } }
protected override void RenderContent(GraphicsInterface gi) { gi.Normal(0, 0, 1); gi.Begin(BeginMode.Lines); gi.Vertex(fxbase, fybase - 5, fzbase); gi.Vertex(fxbase, fybase + fHeight * fSize + 0.5f, fzbase); gi.End(); }
void RenderFrontFacesOfTeeth(GraphicsInterface gi) { // draw front face for (int i = 0; i <= fTeeth; i++) { gi.Drawing.Lines.Begin(); angle = i * 2.0f * (float)Math.PI / fTeeth; gi.Vertex(r0 * (float)Math.Cos(angle), r0 * (float)Math.Sin(angle), fWidth * 0.5f); gi.Vertex(r1 * (float)Math.Cos(angle), r1 * (float)Math.Sin(angle), fWidth * 0.5f); gi.Vertex(r1 * (float)Math.Cos(angle + 3 * da), r1 * (float)Math.Sin(angle + 3 * da), fWidth * 0.5f); gi.Vertex(r1 * (float)Math.Cos(angle + 4 * da), r1 * (float)Math.Sin(angle + 4 * da), fWidth * 0.5f); gi.Drawing.Lines.End(); } }
protected override void RenderContent(GraphicsInterface gi) { int i, j; float theta, phi, theta1; float cosTheta, sinTheta; float cosTheta1, sinTheta1; float ringDelta, sideDelta; ringDelta = (float)(2.0f * Math.PI / fRings); sideDelta = (float)(2.0f * Math.PI / fSides); theta = 0.0f; cosTheta = 1.0f; sinTheta = 0.0f; for (i = fRings - 1; i >= 0; i--) { theta1 = theta + ringDelta; cosTheta1 = (float)Math.Cos(theta1); sinTheta1 = (float)Math.Sin(theta1); gi.Drawing.QuadStrip.Begin(); phi = 0.0f; for (j = fSides; j >= 0; j--) { float cosPhi, sinPhi, dist; phi += sideDelta; cosPhi = (float)Math.Cos(phi); sinPhi = (float)Math.Sin(phi); dist = fOuterRadius + fInnerRadius * cosPhi; gi.Normal(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); gi.Vertex(cosTheta1 * dist, -sinTheta1 * dist, fInnerRadius * sinPhi); gi.Normal(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); gi.Vertex(cosTheta * dist, -sinTheta * dist, fInnerRadius * sinPhi); } gi.Drawing.QuadStrip.End(); theta = theta1; cosTheta = cosTheta1; sinTheta = sinTheta1; } }
protected override void RenderContent(GraphicsInterface GI) { for (iStrip = -fExtent; iStrip <= fExtent; iStrip += fStep) { GI.Drawing.TriangleStrip.Begin(); for (iRun = fExtent; iRun >= -fExtent; iRun -= fStep) { if ((iBounce % 2) == 0) fColor = 1.0f; else fColor = 0.0f; GI.Color(fColor, fColor, fColor, 0.75f); GI.Vertex(iStrip, y, iRun); GI.Vertex(iStrip + fStep, y, iRun); iBounce++; } GI.Drawing.TriangleStrip.End(); } GI.ShadeModel(ShadingModel.Smooth); }
public static void DrawTextureImageUnrotatedAndOrthographically(GraphicsInterface gi, int clientWidth, int clientHeight, GLTexture2D texture, int drawX, int drawYTextMode, // i.e., 0 == draw TOP of image at TOP of viewport, Y-axis points DOWN int drawWidth, int drawHeight) { // Change rendering conditions gi.Features.DepthTest.Disable(); gi.Features.CullFace.Disable(); // Preserve current matrices, and switch to an orthographic view, and // do scaling and translation as necessary. gi.MatrixMode(MatrixMode.Projection); gi.PushMatrix(); gi.MatrixMode(MatrixMode.Modelview); gi.PushMatrix(); gi.MatrixMode(MatrixMode.Projection); gi.LoadIdentity(); gi.Ortho(0, (clientWidth - 1), 0, (clientHeight - 1), -1.0, 1.0); gi.MatrixMode(MatrixMode.Modelview); gi.LoadIdentity(); if (null != texture) { // Enable texture texture.Bind(); } // Enable blending gi.Features.Blend.Enable(); gi.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); // Draw a quad gi.Drawing.Quads.Begin(); // TOP-LEFT gi.TexCoord(0.0f, 1.0f); gi.Color(ColorRGBA.White); gi.Vertex((drawX), ((clientHeight - 1) - drawYTextMode), 0.0f); // BOTTOM-LEFT gi.TexCoord(0.0f, 0.0f); gi.Color(1.0f, 1.0f, 1.0f, 1.0f); gi.Vertex(drawX, ((clientHeight - 1) - (drawYTextMode + drawHeight)), 0.0f); // BOTTOM-RIGHT gi.TexCoord(1.0f, 0.0f); gi.Color(1.0f, 1.0f, 1.0f, 1.0f); gi.Vertex((drawX + (drawWidth)), ((clientHeight - 1) - (drawYTextMode + drawHeight)), 0.0f); // TOP-RIGHT gi.TexCoord(1.0f, 1.0f); gi.Color(1.0f, 1.0f, 1.0f, 1.0f); gi.Vertex((drawX + (drawWidth)), ((clientHeight - 1) - drawYTextMode), 0.0f); gi.Drawing.Quads.End(); // Disable blending gi.Features.Blend.Disable(); if (null != texture) { // Disable texture gi.Features.Texturing2D.Disable(); gi.BindTexture(TextureBindTarget.Texture2d, 0); } // Restore original matrices. gi.MatrixMode(MatrixMode.Modelview); gi.PopMatrix(); gi.MatrixMode(MatrixMode.Projection); gi.PopMatrix(); // Restore rendering conditions gi.FrontFace(FrontFaceDirection.Ccw); // MUST DO AFTER USING wglUseFontOutlines LISTS!!! gi.Features.DepthTest.Enable(); gi.Features.CullFace.Enable(); }
void RenderInsideRadiusCylinder(GraphicsInterface gi) { float angle; // draw inside radius cylinder for (int i = 0; i <= fTeeth; i++) { angle = i * 2.0f * (float)Math.PI / fTeeth; gi.Drawing.Lines.Begin(); gi.Normal(-(float)Math.Cos(angle), -(float)Math.Sin(angle), 0.0f); gi.Vertex(r0 * (float)Math.Cos(angle), r0 * (float)Math.Sin(angle), -fWidth * 0.5f); gi.Vertex(r0 * (float)Math.Cos(angle), r0 * (float)Math.Sin(angle), fWidth * 0.5f); gi.Vertex(r0 * (float)Math.Cos(angle), r0 * (float)Math.Sin(angle), -fWidth * 0.5f); gi.Vertex(r0 * (float)Math.Cos(angle + 4 * da), r0 * (float)Math.Sin(angle + 4 * da), -fWidth * 0.5f); gi.Vertex(r0 * (float)Math.Cos(angle), r0 * (float)Math.Sin(angle), fWidth * 0.5f); gi.Vertex(r0 * (float)Math.Cos(angle + 4 * da), r0 * (float)Math.Sin(angle + 4 * da), fWidth * 0.5f); gi.Drawing.Lines.End(); } }