/// <summary> /// Here's where we do all the drawing. /// </summary> /// <returns> /// <c>true</c> on successful drawing, otherwise <c>false</c>. /// </returns> private static bool DrawGLScene() { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer Gl.glLoadIdentity(); // Reset The View Gl.glTranslatef(0, 0, z); Gl.glRotatef(xrot, 1, 0, 0); Gl.glRotatef(yrot, 0, 1, 0); Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[filter]); switch (qobject) { case 0: glDrawCube(); break; case 1: Gl.glTranslatef(0, 0, -1.5f); // Center The Cylinder Glu.gluCylinder(quadratic, 1, 1, 3, 32, 32); // A Cylinder With A Radius Of 0.5 And A Height Of 2 break; case 2: Glu.gluDisk(quadratic, 0.5f, 1.5f, 32, 32); // Draw A Disc (CD Shape) With An Inner Radius Of 0.5, And An Outer Radius Of 2. Plus A Lot Of Segments ;) break; case 3: Glu.gluSphere(quadratic, 1.3f, 32, 32); // Draw A Sphere With A Radius Of 1 And 16 Longitude And 16 Latitude Segments break; case 4: Gl.glTranslatef(0, 0, -1.5f); // Center The Cone Glu.gluCylinder(quadratic, 1, 0, 3, 32, 32); // A Cone With A Bottom Radius Of .5 And A Height Of 2 break; case 5: part1 += p1; part2 += p2; if (part1 > 359) // 360 Degrees { p1 = 0; part1 = 0; p2 = 1; part2 = 0; } if (part2 > 359) // 360 Degrees { p1 = 1; p2 = 0; } // A Disk Like The One Before Glu.gluPartialDisk(quadratic, 0.5f, 1.5f, 32, 32, part1, part2 - part1); break; } ; xrot += xspeed; yrot += yspeed; return(true); // Keep Going }
public void DrawCylinder() { if (!bCylinderDefined) { Gl.glNewList(LISTCYLINDER, Gl.GL_COMPILE); Gl.glPushMatrix(); Glu.GLUquadric quadratic = Glu.gluNewQuadric(); // Create A Pointer To The Quadric Object Glu.gluQuadricNormals(quadratic, Glu.GLU_SMOOTH); // Create Smooth Normals Glu.gluQuadricTexture(quadratic, 32); // Create Texture Coords Gl.glTranslatef(0.0f, 0.0f, -0.5f); // Center The Cylinder Glu.gluQuadricOrientation(quadratic, Glu.GLU_OUTSIDE); Glu.gluCylinder(quadratic, 0.5f, 0.5f, 1.0f, 32, 32); //glTranslatef(0.0f,0.0f,-0.5f); Gl.glRotatef(180.0f, 1.0f, 0.0f, 0.0f); Glu.gluDisk(quadratic, 0.0f, 0.5f, 32, 32); Gl.glRotatef(180.0f, 1.0f, 0.0f, 0.0f); Gl.glTranslatef(0.0f, 0.0f, 1.0f); Glu.gluDisk(quadratic, 0.0f, 0.5f, 32, 32); Gl.glPopMatrix(); Gl.glEndList(); bCylinderDefined = true; } Gl.glCallList(LISTCYLINDER); }
protected void doorKnob() { int cullFace; Gl.glGetBooleanv(Gl.GL_CULL_FACE, out cullFace); Gl.glDisable(Gl.GL_CULL_FACE); Glu.GLUquadric q = Glu.gluNewQuadric(); //Gl.glColor3d(1,1,1); Gl.glColor3d(1, 1, 0); Gl.glBindTexture(Gl.GL_TEXTURE_2D, this.texturaKnob); Glu.gluQuadricTexture(q, Gl.GL_TRUE); Glu.gluQuadricNormals(q, Gl.GL_SMOOTH); Gl.glPushMatrix(); Glu.gluCylinder(q, 5, 1, 1, 15, 3); Glu.gluCylinder(q, 1, 1, 4, 10, 1); Gl.glPushMatrix(); Gl.glTranslated(0, 0, 5); Gl.glScaled(1, 1, .5); Glu.gluSphere(q, 4, 10, 10); Gl.glPopMatrix(); Gl.glPopMatrix(); Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0); Glu.gluDeleteQuadric(q); if (cullFace != Gl.GL_FALSE) { Gl.glEnable(Gl.GL_CULL_FACE); } }
protected void pintaBisagra() { #region bisagras Gl.glBindTexture(Gl.GL_TEXTURE_2D, this.texturaBisagra); Gl.glColor3d(1, 1, 1); Glu.GLUquadric q = Glu.gluNewQuadric(); Glu.gluQuadricTexture(q, Gl.GL_TRUE); double h = (height - border) / 3; double m = (height - border) / 2 - 4; Gl.glPushMatrix(); Gl.glTranslated(0, m, 0); Gl.glRotated(90, -1, 0, 0); Glu.gluCylinder(q, 1, 1, 8, 10, 10); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glTranslated(0, m - h, 0); Gl.glRotated(90, -1, 0, 0); Glu.gluCylinder(q, 1, 1, 8, 10, 10); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glTranslated(0, m + h, 0); Gl.glRotated(90, -1, 0, 0); Glu.gluCylinder(q, 1, 1, 8, 10, 10); Gl.glPopMatrix(); Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0); Glu.gluDeleteQuadric(q); #endregion }
/// <summary>Нарисовать дерево</summary> private void DrawTrees() { Glu.GLUquadric q = Glu.gluNewQuadric(); Glu.gluQuadricTexture(q, Gl.GL_TRUE); Glu.gluQuadricDrawStyle(q, Glu.GLU_FILL); Gl.glTranslated(0.0, -0.5, 0.0); Gl.glRotated(90, -1.0, 0.0, 0.0); { // рисуем ствол // включаем режим текстурирования, указывая индификатор WoodTexture Gl.glBindTexture(Gl.GL_TEXTURE_2D, WoodTexture); // рисуем цилиндр Glu.gluCylinder(q, 0.2, 0.2, 2, 50, 50); } { // рисуем крону // включаем режим текстурирования, указывая индификатор TreeTexture Gl.glBindTexture(Gl.GL_TEXTURE_2D, TreeTexture); // рисуем сферу Gl.glTranslated(0.0, 0.0, 2.0); Glu.gluSphere(q, 1, 50, 50); Gl.glTranslated(0.0, 0.0, -2.0); } Gl.glRotated(90, 1.0, 0.0, 0.0); Gl.glTranslated(0.0, 0.5, 0.0); Glu.gluDeleteQuadric(q); }
void DrawSelectionHandle() { graphics.PushMatrix(); graphics.Scale(1.5, 1.5, 1.5); Glu.GLUquadric quadratic = Glu.gluNewQuadric(); // Create A Pointer To The Quadric Entity Glu.gluQuadricNormals(quadratic, Glu.GLU_SMOOTH); // Create Smooth Normals Glu.gluQuadricOrientation(quadratic, Glu.GLU_OUTSIDE); graphics.Translate(0.0f, 0.0f, -0.025f); // Center The Cylinder Glu.gluCylinder(quadratic, 0.5f, 0.5f, 0.05f, 20, 3); Glu.gluQuadricOrientation(quadratic, Glu.GLU_INSIDE); Glu.gluCylinder(quadratic, 0.48f, 0.5f, 0.05f, 20, 3); Glu.gluQuadricOrientation(quadratic, Glu.GLU_OUTSIDE); graphics.Rotate(180.0f, 1.0f, 0.0f, 0.0f); Glu.gluDisk(quadratic, 0.48f, 0.5f, 20, 3); graphics.Rotate(180.0f, 1.0f, 0.0f, 0.0f); graphics.Translate(0.0f, 0.0f, 0.05f); Glu.gluDisk(quadratic, 0.48f, 0.5f, 20, 3); graphics.PopMatrix(); }
public override void Recompile() { Gl.glNewList(idVisualizar, Gl.GL_COMPILE); Gl.glPushMatrix(); CauchoNegro cn = new CauchoNegro(); Gl.glDisable(Gl.GL_CULL_FACE); Gl.glColor3d(cn.Ambient.r, cn.Ambient.g, cn.Ambient.b); cn.Set(); Gl.glTranslated(start.x, start.y, start.z); Glu.GLUquadric cil; cil = Glu.gluNewQuadric(); Glu.gluQuadricNormals(cil, Glu.GLU_SMOOTH); Glu.gluCylinder(cil, rad, rad, rad / 2, 32, 32); cil = Glu.gluNewQuadric(); Glu.gluQuadricNormals(cil, Glu.GLU_SMOOTH); Glu.gluDisk(cil, 0.55 * rad, rad, 32, 32); Gl.glTranslated(0, 0, rad / 2); cil = Glu.gluNewQuadric(); Glu.gluQuadricNormals(cil, Glu.GLU_SMOOTH); Glu.gluDisk(cil, 0.55 * rad, rad, 32, 32); cn.UnSet(); Gl.glEnable(Gl.GL_CULL_FACE); Gl.glPopMatrix(); Gl.glEndList(); }
public override void Draw() { if (Enable == false) { return; } float range = 100; float height = _Math3D.GetDistance(pBegin, pEnd); float fAxisRadius = (float)(0.008 * range); float fAxisHeight = (float)(0.95 * height); float fArrowRadius = (float)(0.015 * range); float fArrowHeight = (float)(0.03 * height); Gl.glPushMatrix(); base.Draw(); Gl.glMultMatrixf(Matrix); // Ve hinh Glu.gluCylinder(pObj, fAxisRadius, fAxisRadius, fAxisHeight, 10, 1); Gl.glPushMatrix(); Gl.glTranslatef(0.0f, 0.0f, fAxisHeight); Glu.gluCylinder(pObj, fArrowRadius, 0.0f, fArrowHeight, 10, 1); Gl.glRotatef(180.0f, 1.0f, 0.0f, 0.0f); Glu.gluDisk(pObj, fAxisRadius, fArrowRadius, 10, 1); Gl.glPopMatrix(); Gl.glPopMatrix(); }
public void Draw() { // TODO 3.3.0: Modelovanje modela antene u zasebnoj klasi Antenna //zlatan materijal float[] Ka = { 0.42f, 1.0f, 0.0f, 1.0f }; float[] Kd = { 1.0f, 1.0f, 0.0f, 0.0f }; float[] Ks = { 1.0f, 0.62f, 1.0f, 1.0f }; float[] Ke = { 0.21f, 0.03f, 0.0f, 1.0f }; float[] Se = { 10.0f }; Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, Ka); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, Kd); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, Ks); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_EMISSION, Ke); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SHININESS, Se); // spine Gl.glPushMatrix(); Gl.glTranslatef(-0.5f, 0.0f, 0.0f); Glu.gluCylinder(m_gluObj, m_width, m_width + 1, m_height, 15, 15); Gl.glPopMatrix(); // disc Gl.glPushMatrix(); Gl.glRotatef(180 - 45, 0, 1, 0); //Gl.glTranslatef(3.0f, 0.0f, 0.0f); Glu.gluDisk(m_gluObj, 0, 5, 128, 128); Gl.glPopMatrix(); Gl.glFlush(); }
// Ham ve public override void Draw() { if (Enable == false) { Gl.glDisable(mIndex); return; } Gl.glEnable(mIndex); Gl.glLightfv(mIndex, Gl.GL_POSITION, mLightPos); Gl.glLightfv(mIndex, Gl.GL_DIFFUSE, AmbientLight); Gl.glLightfv(mIndex, Gl.GL_SPECULAR, SpecularLight); // Gl.glLightf(mIndex, Gl.GL_SPOT_CUTOFF, SpotCutOff); Gl.glPushMatrix(); Gl.glMultMatrixf(base.Matrix); Gl.glLightfv(mIndex, Gl.GL_SPOT_DIRECTION, SpotDir); // Mau cua bong den la mau cua nguon sang Gl.glColor3ub(255, 0, 0); Gl.glRotatef(180, 1, 0, 0); Glu.gluCylinder(mQuadricCone, 4.0, 0, 6.0, 15, 15); // Draw a smaller displaced sphere to denote the light bulb // Save the lighting state variables Gl.glPushAttrib(Gl.GL_LIGHTING_BIT); // Turn off lighting and specify a bright yellow sphere Gl.glDisable(Gl.GL_LIGHTING); base.Draw(); Glu.gluSphere(mQuadricSphere, 3.0, 15, 15); // Restore lighting state variables Gl.glPopAttrib(); Gl.glPopMatrix(); }
public override void Recompile() { this.abaj.Recompile(); Gl.glNewList(idVisualizar, Gl.GL_COMPILE); Gl.glPushMatrix(); Gl.glDisable(Gl.GL_CULL_FACE); Glu.GLUquadric sph = Glu.gluNewQuadric(); Glu.gluQuadricOrientation(sph, Glu.GLU_OUTSIDE); Gl.glTranslated(start.x, start.y, start.z); Gl.glTranslated(-(Math.Sqrt(Math.Pow(this.alto, 2) - Math.Pow(this.alto, 2) / 4)), 0, 0); Gl.glRotated(15, 0, 0, 1); Gl.glColor3fv(color); Gl.glClipPlane(Gl.GL_CLIP_PLANE0, new double[] { 1.0, 0.0, 0, -(Math.Sqrt(Math.Pow(this.alto, 2) - Math.Pow(this.alto, 2) / 4)) }); Gl.glEnable(Gl.GL_CLIP_PLANE0); Glu.gluQuadricNormals(sph, Glu.GLU_SMOOTH); Glu.gluCylinder(sph, this.alto, this.alto, this.largo, 32, 32); sph = Glu.gluNewQuadric(); Glu.gluQuadricNormals(sph, Glu.GLU_SMOOTH); Glu.gluDisk(sph, 0, this.alto, 32, 32); sph = Glu.gluNewQuadric(); Glu.gluQuadricNormals(sph, Glu.GLU_SMOOTH); Gl.glTranslated(0, 0, this.largo); Glu.gluDisk(sph, 0, this.alto, 32, 32); Gl.glDisable(Gl.GL_CLIP_PLANE0); Gl.glEnable(Gl.GL_CULL_FACE); Gl.glPopMatrix(); Gl.glEndList(); }
}// drawCylinder public static void drawCylinderTranslucent(Vector3d u, Vector3d v, double r, Color c) { Gl.glEnable(Gl.GL_BLEND); Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); Gl.glDisable(Gl.GL_CULL_FACE); Glu.GLUquadric quad = Glu.gluNewQuadric(); double height = (u - v).Length(); Vector3d dir = (v - u).normalize(); double angle = Math.Acos(dir.z / dir.Length()) * 180 / Math.PI; drawSphere(u, r, c); Gl.glColor3ub(c.R, c.G, c.B); Gl.glPushMatrix(); Gl.glTranslated(u.x, u.y, u.z); Gl.glRotated(angle, -dir.y, dir.x, 0); Glu.gluCylinder(quad, r, r, height, _NSlices, _NSlices); Gl.glPopMatrix(); drawSphere(v, r, c); Glu.gluDeleteQuadric(quad); Gl.glDisable(Gl.GL_BLEND); Gl.glDisable(Gl.GL_CULL_FACE); }// drawCylinderTranslucent
private void DrawAgarrador(bool esIzquierdo) { Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glPushMatrix(); Gl.glEnable(Gl.GL_LIGHTING); Glu.GLUquadric quad = Glu.gluNewQuadric(); Gl.glTranslated((esIzquierdo ? -1 : 1) * ANCHO_RECTANGULO / 3d, LARGO_BASE + LARGO_PARAGOLPE + (LARGO_AGARRADOR / 2d), -RADIO_AGARRADOR); Gl.glRotated(90, 1, 0, 0); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, LUZ_AZUL); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, LUZ_AZUL); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, this.LuzBrillo); Gl.glMateriali(Gl.GL_FRONT, Gl.GL_SHININESS, this.Shininess); Glu.gluCylinder(quad, RADIO_AGARRADOR, RADIO_AGARRADOR, LARGO_AGARRADOR, 20, 20); Gl.glRotated(180, 1, 0, 0); Glu.gluDisk(quad, 0, RADIO_AGARRADOR, 20, 20); Glu.gluCylinder(quad, RADIO_AGARRADOR * 2d, RADIO_AGARRADOR * 2d, LARGO_AGARRADOR * 0.2, 20, 20); Gl.glTranslated(0, 0, LARGO_AGARRADOR * 0.2d); Glu.gluDisk(quad, 0, RADIO_AGARRADOR * 2d, 20, 20); Glu.gluDeleteQuadric(quad); Gl.glDisable(Gl.GL_LIGHTING); Gl.glPopMatrix(); }
// Ham ve public override void Draw() { if (Enable == false) { return; } base.Draw(); Gl.glPushMatrix(); Gl.glMultMatrixf(base.Matrix); Gl.glRotatef(-90, 1, 0, 0); int texture; if (EnableTexture == true) { texture = Gl.GL_TRUE; Gl.glColor3b(127, 127, 127); } else { texture = Gl.GL_FALSE; } Glu.gluQuadricTexture(mQuadricCone, texture); Glu.gluQuadricTexture(mQuadricDisk, texture); Glu.gluCylinder(mQuadricCone, mBase, 0, mHeight, mSlices, mStacks); Glu.gluDisk(mQuadricDisk, 0, mBase, mSlices, mStacks); Gl.glPopMatrix(); }
protected override void Particular() { Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("old7")); Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 1); Glu.GLUquadric q = Glu.gluNewQuadric(); Glu.gluQuadricTexture(q, Gl.GL_TRUE); Gl.glColor3d(1, 1, 1); Gl.glPushMatrix(); Gl.glRotated(90, 1, 4, 0); Glu.gluDisk(q, 0, 5 * 2, 20, 20); Gl.glRotated(180, 1, 0, 0); Glu.gluCylinder(q, 5 * 2, 8 * 2, 3 * 2, 20, 20); Gl.glTranslated(0, 0, 2.5 * 2); Gl.glColor3d(0, 0, 0); Glu.gluDisk(q, 14.8, 15, 20, 20); Gl.glTranslated(0, 0, -2.5 * 2); Gl.glRotated(90, 1, 4, 0); Gl.glPopMatrix(); yInc = 0; Gl.glColor3d(1, 1, 1); Glu.gluDeleteQuadric(q); Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 0); Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0); }
/// <summary> /// Metoda iscrtava jednu mlaznicu. /// </summary> void DrawBase() { Gl.glDisable(Gl.GL_CULL_FACE); Gl.glPushMatrix(); Gl.glBindTexture(Gl.GL_TEXTURE_2D, World.textures[(int)World.TextureObjects.TEKSTURA_SREBRA]); Gl.glColor3ub(150, 180, 180); Gl.glPushMatrix(); Gl.glTranslatef(0.0f, 0.0f, 7.0f); Gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f); Glu.gluCylinder(m_gluObj, 1.3f, 1.3f, 0.5f, 128, 128); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glTranslatef(0.0f, 0.0f, 7.0f); Gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f); Glu.gluDisk(m_gluObj, 0.0f, 1.3f, 128, 128); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glTranslatef(0.0f, 0.0f, 7.0f); Gl.glTranslatef(0.0f, -0.5f, 0.0f); Gl.glRotatef(90.0f, 1.0f, 0.0f, 0.0f); Glu.gluDisk(m_gluObj, 0.0f, 1.3f, 128, 128); Gl.glPopMatrix(); Gl.glPopMatrix(); }
public override void Render() { #if drawCenter Gl.glPushMatrix(); Gl.glTranslated(position.X, position.Y, position.Z); Glu.GLUquadric qu = Glu.gluNewQuadric(); Gl.glColor3d(1, 1, 0); Glu.gluSphere(qu, 2, 5, 5); Glu.gluDeleteQuadric(qu); Gl.glPopMatrix(); #endif Glu.GLUquadric q = Glu.gluNewQuadric(); Gl.glPushMatrix(); Gl.glTranslated(position.X, position.Y, position.Z); Gl.glColor3d(128 / 256.0, 64 / 256.0, 64 / 256.0); Gl.glColor3d(.55, .425, .425); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(q, 10, 1, 3, 10, 5); Gl.glPopMatrix(); Glu.gluDeleteQuadric(q); c.Render(); Gl.glTranslated(position.X, position.Y - length - 30, position.Z); renderLamp(); Gl.glPopMatrix(); }
/// <summary> /// Draws a cone very quickly using an OpenGL display list, with no bottom disk and /// 8 slices radiating from the tip. This method must not be called in between Gl.glNewList /// and Gl.glEndList.</summary> /// <param name="baseRadius">Radius at base of cone</param> /// <param name="height">Cone height</param> /// <param name="renderStyle">Render style: Wireframe or Solid</param> public static void DrawConeDisplayList(float baseRadius, float height, RenderStyle renderStyle) { int drawStyle = (renderStyle == RenderStyle.Wireframe) ? Glu.GLU_LINE : Glu.GLU_FILL; Gl.glPushMatrix(); Gl.glScalef(baseRadius, baseRadius, height); int displayList; if (!s_coneDisplayLists.TryGetValue(drawStyle, out displayList)) { displayList = Gl.glGenLists(1); Gl.glNewList(displayList, Gl.GL_COMPILE); Glu.gluQuadricDrawStyle(s_quadric, drawStyle); Glu.gluQuadricNormals(s_quadric, Glu.GLU_SMOOTH); Glu.gluCylinder(s_quadric, 1.0, 0.0, 1.0, FAST_CONE_SLICES, FAST_CONE_STACKS); Gl.glEndList(); s_coneDisplayLists.Add(drawStyle, displayList); } Gl.glCallList(displayList); Gl.glPopMatrix(); // Note that we are not rendering the bottom. That would require a separate call to gluDisk. // Assuming that each stack is a quad strip. This cone could be more efficiently rendered // as a triangle fan. Util3D.RenderStats.PrimCount += FAST_CONE_SLICES * FAST_CONE_STACKS; Util3D.RenderStats.VertexCount += (2 + FAST_CONE_SLICES * 2) * FAST_CONE_STACKS; }
protected override void Particular() { //Gl.glColor3d(0.26171875,0.55078125,0.69140625); Gl.glColor3d(1, 1, 1); Gl.glPushMatrix(); Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("COLCHON")); GlUtils.PintaOrtoedro(largo, 10, ancho, true); Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("WOOD1")); Glu.GLUquadric q = Glu.gluNewQuadric(); Glu.gluQuadricTexture(q, Gl.GL_TRUE); Gl.glTranslated(-largo + 5, -10, -ancho + 5); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(q, 5, 2, 20, 20, 20); Gl.glRotated(-90, 1, 0, 0); Gl.glTranslated(0, 0, 2 * ancho - 10); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(q, 5, 2, 20, 20, 20); Gl.glRotated(-90, 1, 0, 0); Gl.glTranslated(2 * largo - 10, 0, 0); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(q, 5, 2, 20, 20, 20); Gl.glRotated(-90, 1, 0, 0); Gl.glTranslated(0, 0, -2 * ancho + 10); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(q, 5, 2, 20, 20, 20); Gl.glRotated(-90, 1, 0, 0); Gl.glPopMatrix(); // yInc = 30; Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0); }
private void raindrop() { Gl.glPopMatrix(); Gl.glColor3f(0.85f, 0.85f, 0.85f); Glu.gluSphere(Glu.gluNewQuadric(), 0.3, 15, 15); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(Glu.gluNewQuadric(), 0.3, 0, 1, 15, 15); Gl.glPopMatrix(); }
private void simpleOpenGlControl1_Paint(object sender, PaintEventArgs e) { Gl.glClearColor(r, g, b, 0.0f); Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); Glu.gluLookAt(eyex, eyey, eyez, atx, aty, atz, 0.0, 1.0, 0.0); Gl.glColor3f(0.5f, 1, 0); Glu.gluCylinder(Glu.gluNewQuadric(), 2, 10, 20, 30, 30); }
void baze() { Gl.glPushMatrix(); //save the matrix Gl.glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); //rotate the cylinder so that it is on the base and not on a round wall Glu.gluCylinder(Glu.gluNewQuadric(), Bazes_radiuss, Bazes_radiuss, Bazes_platums, 25, 25); //Base as a cylinder, the last two parameters 25 and 25 are used to make the cylinder round Gl.glPopMatrix(); //loading matrix }
/// <summary> /// Draws everything. /// </summary> /// <returns> /// Returns <c>true</c> on success, otherwise <c>false</c>. /// </returns> private static bool DrawGLScene() // Here's Where We Do All The Drawing { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer Gl.glLoadIdentity(); // Reset The View Gl.glTranslatef(0, 0, z); Gl.glEnable(Gl.GL_TEXTURE_GEN_S); // Enable Texture Coord Generation For S (NEW) Gl.glEnable(Gl.GL_TEXTURE_GEN_T); // Enable Texture Coord Generation For T (NEW) Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[filter + (filter + 1)]); // This Will Select The Sphere Map Gl.glPushMatrix(); Gl.glRotatef(xrot, 1, 0, 0); Gl.glRotatef(yrot, 0, 1, 0); switch (objectToDraw) { case 0: GlDrawCube(); break; case 1: Gl.glTranslatef(0, 0, -1.5f); // Center The Cylinder Glu.gluCylinder(quadratic, 1, 1, 3, 32, 32); // A Cylinder With A Radius Of 0.5 And A Height Of 2 break; case 2: Glu.gluSphere(quadratic, 1.3, 32, 32); // Draw A Sphere With A Radius Of 1 And 16 Longitude And 16 Latitude Segments break; case 3: Gl.glTranslatef(0, 0, -1.5f); // Center The Cone Glu.gluCylinder(quadratic, 1, 0, 3, 32, 32); // A Cone With A Bottom Radius Of .5 And A Height Of 2 break; } ; Gl.glPopMatrix(); Gl.glDisable(Gl.GL_TEXTURE_GEN_S); Gl.glDisable(Gl.GL_TEXTURE_GEN_T); Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[filter * 2]); // This Will Select The BG Maps... Gl.glPushMatrix(); Gl.glTranslatef(0, 0, -24); Gl.glBegin(Gl.GL_QUADS); Gl.glNormal3f(0, 0, 1); Gl.glTexCoord2f(0, 0); Gl.glVertex3f(-13.3f, -10, 10); Gl.glTexCoord2f(1, 0); Gl.glVertex3f(13.3f, -10, 10); Gl.glTexCoord2f(1, 1); Gl.glVertex3f(13.3f, 10, 10); Gl.glTexCoord2f(0, 1); Gl.glVertex3f(-13.3f, 10, 10); Gl.glEnd(); Gl.glPopMatrix(); xrot += xspeed; yrot += yspeed; return(true); // Everything Went OK }
void pintaPata(double alto) { Glu.GLUquadric q = Glu.gluNewQuadric(); Glu.gluQuadricTexture(q, Gl.GL_TRUE); Gl.glTranslated(0, -alto, 0); Gl.glRotated(90, -1, 0, 0); Glu.gluCylinder(q, 5, 8, 2 * alto, 20, 20); Gl.glRotated(-90, -1, 0, 0); Gl.glTranslated(0, alto, 0); Glu.gluDeleteQuadric(q); }
void desenhaEixo() { Glu.gluCylinder(modelo.quad, 0.5, 0.5, 20, 16, 15); Gl.glPushMatrix(); Gl.glTranslatef(0, 0, 20); Gl.glPushMatrix(); Gl.glRotatef(180, 0, 1, 0); Glu.gluDisk(modelo.quad, 0.5, 2, 16, 6); Gl.glPopMatrix(); Glu.gluCylinder(modelo.quad, 2, 0, 5, 16, 15); Gl.glPopMatrix(); }
private void DrawLinterna(bool prenderLinterna) { float[] locomotora_light_color = new float[4] { 1.0f, 1.0f, 1.0f, 1.0f }; Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glPushMatrix(); Gl.glEnable(Gl.GL_LIGHTING); Glu.GLUquadric quad = Glu.gluNewQuadric(); Gl.glTranslated(0, LARGO_BASE - LARGO_BASE * 0.1d, RADIO_TROMPA * 2d); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_POSITION, light_linterna_position); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_SPOT_DIRECTION, light_linterna_direction); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_DIFFUSE, locomotora_light_color); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_AMBIENT, new float[4] { 0f, 0f, 0f, 1f }); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_SPECULAR, new float[4] { 1f, 1f, 1f, 1f }); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_LINEAR_ATTENUATION, new float[] { .01f }); Gl.glLightfv(Gl.GL_LIGHT6, Gl.GL_SPOT_CUTOFF, new float[] { 30.0f }); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, LUZ_ROJO); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_DIFFUSE, LUZ_ROJO); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, this.LuzBrillo); Gl.glMateriali(Gl.GL_FRONT, Gl.GL_SHININESS, this.Shininess); Glu.gluCylinder(quad, RADIO_SOSTENEDOR_LUZ, RADIO_SOSTENEDOR_LUZ, ALTO_SOSTENEDOR_LUZ, 20, 20); Gl.glTranslated(0, ANCHO_CONTENEDOR_LUZ * 0.5d, ALTO_SOSTENEDOR_LUZ + RADIO_CONTENEDOR_LUZ); Gl.glRotated(90, 1, 0, 0); Glu.gluCylinder(quad, RADIO_CONTENEDOR_LUZ, RADIO_CONTENEDOR_LUZ, ANCHO_CONTENEDOR_LUZ, 20, 20); Gl.glTranslated(0, 0, ANCHO_CONTENEDOR_LUZ); Glu.gluDisk(quad, 0, RADIO_CONTENEDOR_LUZ, 20, 20); if (prenderLinterna) { Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_EMISSION, this.luzEmicionPrendida); } Gl.glTranslated(0, 0, -(ANCHO_CONTENEDOR_LUZ * 0.8d)); Gl.glRotated(180, 1, 0, 0); //Gl.glScaled(0.5d, 1, 2); Glu.gluDisk(quad, 0, RADIO_CONTENEDOR_LUZ, 20, 20); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_EMISSION, this.luzEmicionApagada); Glu.gluDeleteQuadric(quad); Gl.glDisable(Gl.GL_LIGHTING); Gl.glPopMatrix(); }
protected override void Particular() { Gl.glDisable(Gl.GL_TEXTURE_2D); Gl.glColor3d(1, 1, 1); GlUtils.PintaOrtoedro(0.7f * 40, 1.0f * 40, 0.7f * 40); Gl.glPushMatrix(); Gl.glTranslated(0, 1.50f * 40, 0); GlUtils.PintaOrtoedro(0.7f * 40, 0.5f * 40, 0.7f * 40); Gl.glPopMatrix(); Gl.glColor3d(0, 0, 0); GlUtils.pintaLineas(0.7f * 40, 1.0f * 40, 0.7f * 40); //pintaLineas(0.7f*40,1,0.7f); Gl.glPushMatrix(); Gl.glTranslatef(0, 1.50f * 40, 0); GlUtils.pintaLineas(0.7f * 40, 0.5f * 40, 0.7f * 40); //pintaLineas(0.7f*40,0.5f*40,0.7f); Gl.glColor3d(1, 1, 1); Gl.glTranslatef(0, 0, 0.8f * 40); Gl.glRotated(90, 0, 0, 1); GlUtils.PintaOrtoedro(0.5f * 40, 0.7f * 40, 0.1f * 40); Gl.glColor3d(0, 0, 0); GlUtils.pintaLineas(0.5f * 40, 0.7f * 40, 0.1f * 40); //pintaLineas(0.5f*40,0.7f*40,0.1f); Gl.glColor3d(0, 0, 0); Gl.glTranslatef(-0.2f * 40, 0.5f * 40, 0.1f * 40); Gl.glRotated(90, 0, 1, 0); Glu.gluCylinder(Glu.gluNewQuadric(), 0.03f * 40, 0.05f * 40, 0.4f * 40, 10, 10); Gl.glPopMatrix(); Gl.glPushMatrix(); Gl.glTranslatef(0, 0, 0.8f * 40); Gl.glColor3d(1, 1, 1); GlUtils.PintaOrtoedro(0.7f * 40, 1.0f * 40, 0.1f * 40); Gl.glColor3d(0, 0, 0); GlUtils.pintaLineas(0.7f * 40, 1.0f * 40, 0.1f * 40); //pintaLineas(0.7f*40,1,0.1f); Gl.glTranslatef(-0.5f * 40, 0, 0.1f * 40); Gl.glRotated(90, -1, 0, 0); Glu.gluCylinder(Glu.gluNewQuadric(), 0.03f * 40, 0.05f * 40, 0.4f * 40, 10, 10); Gl.glPopMatrix(); Gl.glEnable(Gl.GL_TEXTURE_2D); yInc = 40; }
protected void renderLamp() { Gl.glGetBooleanv(Gl.GL_CULL_FACE, out cullFace); Gl.glDisable(Gl.GL_CULL_FACE); Glu.GLUquadric quadric; quadric = Glu.gluNewQuadric(); Gl.glPushMatrix(); Gl.glTranslated(0, 0, 0); #region cuerpo // Gl.glColor3d(1, 0, 0); //Gl.glColor3d(1, 0, 0); Gl.glPushMatrix(); Gl.glTranslated(0, 25, 0); Gl.glRotated(-90, 1, 0, 0); Glu.gluCylinder(quadric, 5, 10, 10, 8, 10); Gl.glPopMatrix(); #endregion cuerpo #region bombillo Gl.glPushMatrix(); Gl.glTranslated(0, 25, 0); Gl.glRotated(90, 1, 0, 0); //Gl.glColor3d(.5,.5,.5); Glu.gluCylinder(quadric, 5, 5, 12, 8, 8); Gl.glPopMatrix(); Gl.glBindTexture(Gl.GL_TEXTURE_2D, GlUtils.Texture("bulb")); Gl.glPushMatrix(); Gl.glColor3d(1, 1, 1); Gl.glTranslated(0, 8, 0); Glut.glutSolidSphere(10, 8, 8); Gl.glPopMatrix(); #endregion bombillo; Gl.glPushMatrix(); Gl.glEnable(Gl.GL_BLEND); Gl.glColor3d(.98, .58, .35); Gl.glClipPlane(Gl.GL_CLIP_PLANE0, plano); Gl.glEnable(Gl.GL_CLIP_PLANE0); Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 1); Glu.gluSphere(quadric, 30, 15, 10); Gl.glLightModeli(Gl.GL_LIGHT_MODEL_TWO_SIDE, 0); Gl.glPopMatrix(); Gl.glDisable(Gl.GL_CLIP_PLANE0); Gl.glPopMatrix(); if (cullFace != Gl.GL_FALSE) { Gl.glEnable(Gl.GL_CULL_FACE); } }
public override void Recompile() { asient.Recompile(); foreach (Ortoedro o in patas) { o.Recompile(); } foreach (Ortoedro o in madesp) { o.Recompile(); } Gl.glNewList(idVisualizar, Gl.GL_COMPILE); Gl.glPushMatrix(); Gl.glDisable(Gl.GL_CULL_FACE); Glu.GLUquadric sph = Glu.gluNewQuadric(); Glu.gluQuadricOrientation(sph, Glu.GLU_OUTSIDE); Gl.glTranslated(madesp[0].Inicio.x, madesp[0].Inicio.y - madesp[0].Alto / 5.0, madesp[0].Inicio.z - asient.Largo + madesp[0].Largo); Gl.glColor3fv(asient.Color); Gl.glClipPlane(Gl.GL_CLIP_PLANE0, new double[] { 1.0, 0.0, 0, 0.0 }); Gl.glEnable(Gl.GL_CLIP_PLANE0); Glu.gluCylinder(sph, madesp[0].Alto / 5, madesp[0].Alto / 5, asient.Ancho - 2 * madesp[0].Largo, 32, 32); sph = Glu.gluNewQuadric(); Glu.gluDisk(sph, 0, madesp[0].Alto / 5, 32, 32); sph = Glu.gluNewQuadric(); Gl.glTranslated(0, 0, asient.Largo - 2 * madesp[0].Largo); Glu.gluDisk(sph, 0, madesp[0].Alto / 5, 32, 32); Gl.glPopMatrix(); Gl.glBegin(Gl.GL_POLYGON); Gl.glTexCoord2d(0, 0); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y, madesp[0].Inicio.z - madesp[0].Largo); Gl.glTexCoord2d(1, 0); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y - 2 * madesp[0].Alto / 5, madesp[0].Inicio.z - madesp[0].Largo); Gl.glTexCoord2d(1, 1); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y - 2 * madesp[0].Alto / 5, madesp[0].Inicio.z - asient.Largo + madesp[0].Largo); Gl.glTexCoord2d(0, 1); Gl.glVertex3d(madesp[0].Inicio.x + 0.05, madesp[0].Inicio.y, madesp[0].Inicio.z - asient.Largo + madesp[0].Largo); Gl.glEnd(); Gl.glDisable(Gl.GL_CLIP_PLANE0); Gl.glEnable(Gl.GL_CULL_FACE); Gl.glEndList(); }
// --- Application Methods --- #region Init() private static void Init() { Glu.GLUquadric quadric; float[] materialAmbient = { 0.5f, 0.5f, 0.5f, 1.0f }; float[] materialSpecular = { 1.0f, 1.0f, 1.0f, 1.0f }; float[] materialShininess = { 50.0f }; float[] lightPosition = { 1.0f, 1.0f, 1.0f, 0.0f }; float[] modelAmbient = { 0.5f, 0.5f, 0.5f, 1.0f }; Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_AMBIENT, materialAmbient); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SPECULAR, materialSpecular); Gl.glMaterialfv(Gl.GL_FRONT, Gl.GL_SHININESS, materialShininess); Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, lightPosition); Gl.glLightModelfv(Gl.GL_LIGHT_MODEL_AMBIENT, modelAmbient); Gl.glEnable(Gl.GL_LIGHTING); Gl.glEnable(Gl.GL_LIGHT0); Gl.glEnable(Gl.GL_DEPTH_TEST); // Create 4 display lists, each with a different quadric object. Different drawing // styles and surface normal specifications are demonstrated. startList = Gl.glGenLists(4); quadric = Glu.gluNewQuadric(); Glu.gluQuadricCallback(quadric, Glu.GLU_ERROR, new Glu.QuadricErrorCallback(Error)); Glu.gluQuadricDrawStyle(quadric, Glu.GLU_FILL); // smooth shaded Glu.gluQuadricNormals(quadric, Glu.GLU_SMOOTH); Gl.glNewList(startList, Gl.GL_COMPILE); Glu.gluSphere(quadric, 0.75, 15, 10); Gl.glEndList(); Glu.gluQuadricDrawStyle(quadric, Glu.GLU_FILL); // flat shaded Glu.gluQuadricNormals(quadric, Glu.GLU_FLAT); Gl.glNewList(startList + 1, Gl.GL_COMPILE); Glu.gluCylinder(quadric, 0.5, 0.3, 1.0, 15, 5); Gl.glEndList(); Glu.gluQuadricDrawStyle(quadric, Glu.GLU_LINE); // all polygons wireframe Glu.gluQuadricNormals(quadric, Glu.GLU_NONE); Gl.glNewList(startList + 2, Gl.GL_COMPILE); Glu.gluDisk(quadric, 0.25, 1.0, 20, 4); Gl.glEndList(); Glu.gluQuadricDrawStyle(quadric, Glu.GLU_SILHOUETTE); // boundary only Glu.gluQuadricNormals(quadric, Glu.GLU_NONE); Gl.glNewList(startList + 3, Gl.GL_COMPILE); Glu.gluPartialDisk(quadric, 0.0, 1.0, 20, 4, 0.0, 225.0); Gl.glEndList(); }