private void drawGyroCube() { GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glEnable(GL.GL_TEXTURE_2D); GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[2]); GL.glNormal3f(-1, 0, 0); drawSquareSurface(0, CubeHeight, CubeDepth, eAxis.X); GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[0]); GL.glNormal3f(1, 0, 0); drawSquareSurface(CubeWidth, CubeHeight, CubeDepth, eAxis.X); GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[3]); GL.glNormal3f(0, 0, -1); drawSquareSurface(CubeWidth, CubeHeight, 0, eAxis.Z); GL.glBindTexture(GL.GL_TEXTURE_2D, m_textureList[1]); GL.glNormal3f(0, 0, 1); drawSquareSurface(CubeWidth, CubeHeight, CubeDepth, eAxis.Z); drawSquareSurface(CubeWidth, 0, CubeDepth, eAxis.Y); GL.glNormal3f(0, -1, 0); drawSquareSurface(CubeWidth, CubeHeight, CubeDepth, eAxis.Y); GL.glNormal3f(0, 1, 0); GL.glDisable(GL.GL_TEXTURE_2D); }
void drawFloor() { GL.glEnable(GL.GL_LIGHTING); GL.glPushMatrix(); GL.glColor3d(0, 1, 0); GL.glTranslated(0, -0.01, 0); float[] grass_ambuse = { 0.03f, 0.56f, 0.19f, 1.0f }; float[] grass_specular = { 0.0f, 0.0f, 0.0f, 1.0f }; float[] grass_shininess = { 10 }; GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE, grass_ambuse); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, grass_specular); GL.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, grass_shininess); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0, 1, 0); GL.glVertex3f(-200, 0, -200); GL.glVertex3f(-200, 0, 200); GL.glVertex3f(200, 0, 200); GL.glVertex3f(200, 0, -200); GL.glEnd(); GL.glDisable(GL.GL_LIGHTING); GL.glPopMatrix(); }
void DrawGrid(float gridsize) { //floor texture GL.glEnable(GL.GL_TEXTURE_2D); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]); GL.glBegin(GL.GL_QUADS); GL.glColor3f(1f, 1f, 1f);//white clear //left side GL.glNormal3f(0.0f, 1.0f, 0.0f); GL.glTexCoord2f(0, 0); GL.glVertex3f(0, 0, 0); GL.glTexCoord2f(0, 1); GL.glVertex3f(-gridsize, 0, 0); GL.glTexCoord2f(1f, 1f); GL.glVertex3f(-gridsize, 0, -gridsize * 2); GL.glTexCoord2f(1f, 0); GL.glVertex3f(0, 0, -gridsize * 2); //right side GL.glNormal3f(0.0f, 1.0f, 0.0f); GL.glTexCoord2f(0, 0); GL.glVertex3f(0, 0, 0); GL.glTexCoord2f(0, 1); GL.glVertex3f(gridsize, 0, 0); GL.glTexCoord2f(1f, 1f); GL.glVertex3f(gridsize, 0, -gridsize * 2); GL.glTexCoord2f(1f, 0); GL.glVertex3f(0, 0, -gridsize * 2); GL.glEnd(); GL.glDisable(GL.GL_TEXTURE_2D); }
void DrawGrid(float gridsize, bool sky) { float h = 0; //floor texture GL.glEnable(GL.GL_TEXTURE_2D); if (sky) { GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[6]); } else { GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]); } GL.glBegin(GL.GL_QUADS); GL.glColor3f(1f, 1f, 1f);//white clear //left side if (sky) { h = 10; GL.glNormal3f(0.0f, -1.0f, 0.0f); } else { GL.glNormal3f(0.0f, 1.0f, 0.0f); } GL.glTexCoord2f(0, 0); GL.glVertex3f(0, h, 0); GL.glTexCoord2f(0, 1); GL.glVertex3f(-gridsize, h, 0); GL.glTexCoord2f(1f, 1f); GL.glVertex3f(-gridsize, h, -gridsize * 2); GL.glTexCoord2f(1f, 0); GL.glVertex3f(0, h, -gridsize * 2); //right side if (sky) { GL.glNormal3f(0.0f, -1.0f, 0.0f); } else { GL.glNormal3f(0.0f, 1.0f, 0.0f); } GL.glTexCoord2f(0, 0); GL.glVertex3f(0, h, 0); GL.glTexCoord2f(0, 1); GL.glVertex3f(gridsize, h, 0); GL.glTexCoord2f(1f, 1f); GL.glVertex3f(gridsize, h, -gridsize * 2); GL.glTexCoord2f(1f, 0); GL.glVertex3f(0, h, -gridsize * 2); GL.glEnd(); GL.glDisable(GL.GL_TEXTURE_2D); }
public void Drawfloor() { GL.glPushMatrix(); GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glTranslatef(0, -0.001f, 0); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0, 1, 0); GL.glVertex3f(-100, 0, -100); GL.glVertex3f(-100, 0, 100); GL.glVertex3f(100, 0, 100); GL.glVertex3f(100, 0, -100); GL.glEnd(); GL.glPopMatrix(); }
public void createLeafList() { GL.glNewList(LEAF_LIST + currentTree, GL.GL_COMPILE); GL.glBegin(GL.GL_TRIANGLES); GL.glNormal3f(-0.1f, 0, leafScale); GL.glVertex3f(0, 0, 0); GL.glVertex3f(leafScale, leafScale, 0.1f); GL.glVertex3f(0, leafScale * 2, 0); GL.glNormal3f(0.1f, 0, leafScale); GL.glVertex3f(0, 0, 0); GL.glVertex3f(0, leafScale * 2, 0); GL.glVertex3f(leafScale, leafScale, 0.1f); GL.glEnd(); GL.glEndList(); }
void drawFloorTextured() { GL.glEnable(GL.GL_TEXTURE_2D); GL.glDisable(GL.GL_BLEND); GL.glColor3d(1, 1, 1); GL.glDisable(GL.GL_LIGHTING); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[5]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0, 1, 0); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-200, -0.01f, 200); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(200, -0.01f, 200); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(200, -0.01f, -200); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-200, -0.01f, -200); GL.glEnd(); GL.glDisable(GL.GL_TEXTURE_2D); GL.glEnable(GL.GL_BLEND); GL.glEnable(GL.GL_LIGHTING); }
void drawground() { { GL.glBindTexture(GL.GL_TEXTURE_2D, TextureGround[0]); GL.glNormal3f(0.0f, -1.0f, 0.0f); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3d(-20, -20, ground[0, 2] - 0.05); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3d(-20, 20, ground[0, 2] - 0.05); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3d(20, 20, ground[0, 2] - 0.05); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3d(20, -20, ground[0, 2] - 0.05); GL.glColor3f(0, 0, 0); GL.glEnd(); } }
/// <summary> /// Draws a doughnut. /// </summary> /// <param name="r">The inner radius.</param> /// <param name="R">The outer radius.</param> /// <param name="nsides">The number of sides.</param> /// <param name="rings">The number of rings.</param> private static void Doughnut(float r, float R, int nsides, int rings) { float theta, phi, theta1; float cosTheta, sinTheta; float cosTheta1, sinTheta1; float ringDelta, sideDelta; ringDelta = 2.0f * M_PI / rings; sideDelta = 2.0f * M_PI / nsides; theta = 0.0f; cosTheta = 1.0f; sinTheta = 0.0f; for (int i = rings - 1; i >= 0; i--) { theta1 = theta + ringDelta; cosTheta1 = (float)Math.Cos(theta1); sinTheta1 = (float)Math.Sin(theta1); GL.glBegin(GL.GL_QUAD_STRIP); phi = 0.0f; for (int j = nsides; j >= 0; j--) { float cosPhi, sinPhi, dist; phi += sideDelta; cosPhi = (float)Math.Cos(phi); sinPhi = (float)Math.Sin(phi); dist = R + r * cosPhi; GL.glNormal3f(cosTheta1 * cosPhi, -sinTheta1 * cosPhi, sinPhi); GL.glVertex3f(cosTheta1 * dist, -sinTheta1 * dist, r * sinPhi); GL.glNormal3f(cosTheta * cosPhi, -sinTheta * cosPhi, sinPhi); GL.glVertex3f(cosTheta * dist, -sinTheta * dist, r * sinPhi); } GL.glEnd(); theta = theta1; cosTheta = cosTheta1; sinTheta = sinTheta1; } }
// --- Private Methods --- #region DrawBox(float size, uint type) /// <summary> /// Draws a box. /// </summary> /// <param name="size">The size of the box.</param> /// <param name="type">The type of drawing to do.</param> private static void DrawBox(float size, uint type) { float[ , ] v = new float[8, 3]; v[0, 0] = v[1, 0] = v[2, 0] = v[3, 0] = -size / 2; v[4, 0] = v[5, 0] = v[6, 0] = v[7, 0] = size / 2; v[0, 1] = v[1, 1] = v[4, 1] = v[5, 1] = -size / 2; v[2, 1] = v[3, 1] = v[6, 1] = v[7, 1] = size / 2; v[0, 2] = v[3, 2] = v[4, 2] = v[7, 2] = -size / 2; v[1, 2] = v[2, 2] = v[5, 2] = v[6, 2] = size / 2; for (int i = 5; i >= 0; i--) { GL.glBegin(type); GL.glNormal3f(n[i, 0], n[i, 1], n[i, 2]); GL.glVertex3f(v[faces[i, 0], 0], v[faces[i, 0], 1], v[faces[i, 0], 2]); GL.glVertex3f(v[faces[i, 1], 0], v[faces[i, 1], 1], v[faces[i, 1], 2]); GL.glVertex3f(v[faces[i, 2], 0], v[faces[i, 2], 1], v[faces[i, 2], 2]); GL.glVertex3f(v[faces[i, 3], 0], v[faces[i, 3], 1], v[faces[i, 3], 2]); GL.glEnd(); } }
private static void Pentagon(int a, int b, int c, int d, int e, uint shadeType) { float[] n0 = new float[3]; float[] d1 = new float[3]; float[] d2 = new float[3]; float[] da = { dodec[a, 0], dodec[a, 1], dodec[a, 2] }; float[] db = { dodec[b, 0], dodec[b, 1], dodec[b, 2] }; float[] dc = { dodec[c, 0], dodec[c, 1], dodec[c, 2] }; DIFF3(da, db, d1); DIFF3(db, dc, d2); CrossProduct(d1, d2, n0); Normalize(n0); GL.glBegin(shadeType); GL.glNormal3f(n0[0], n0[1], n0[2]); GL.glVertex3f(dodec[a, 0], dodec[a, 1], dodec[a, 2]); GL.glVertex3f(dodec[b, 0], dodec[b, 1], dodec[b, 2]); GL.glVertex3f(dodec[c, 0], dodec[c, 1], dodec[c, 2]); GL.glVertex3f(dodec[d, 0], dodec[d, 1], dodec[d, 2]); GL.glVertex3f(dodec[e, 0], dodec[e, 1], dodec[e, 2]); GL.glEnd(); }
private void drawGyroPyramid() { GL.glPushMatrix(); GL.glScalef(1.0f, -1.0f, 1.0f); // scale the position to draw the pyramid at vertical inversion drawSquareSurface(PyramidWidth, 0.0f, PyramidDepth, eAxis.Y); GL.glBegin(GL.GL_TRIANGLES); // first x axis GL.glNormal3f(-0.81373f, 0.58124f, 0); GL.glVertex3f(0.0f, 0.0f, 0.0f); GL.glVertex3f(PyramidWidth / 2, PyramidHeight, PyramidDepth / 2); GL.glVertex3f(0.0f, 0.0f, PyramidDepth); // second x axis GL.glNormal3f(0.81373f, 0.58124f, 0); GL.glVertex3f(PyramidWidth, 0.0f, 0.0f); GL.glVertex3f(PyramidWidth / 2, PyramidHeight, PyramidDepth / 2); GL.glVertex3f(PyramidWidth, 0.0f, PyramidDepth); // first Z axis GL.glNormal3f(0, 0.58124f, -0.81373f); GL.glVertex3f(0.0f, 0.0f, 0.0f); GL.glVertex3f(PyramidWidth / 2, PyramidHeight, PyramidDepth / 2); GL.glVertex3f(PyramidWidth, 0.0f, 0.0f); // second Z axis GL.glNormal3f(0, 0.58124f, 0.81373f); GL.glVertex3f(0.0f, 0.0f, PyramidDepth); GL.glVertex3f(PyramidWidth / 2, PyramidHeight, PyramidDepth / 2); GL.glVertex3f(PyramidWidth, 0.0f, PyramidDepth); GL.glEnd(); GL.glPopMatrix(); }
public void DrawTexturedCube() { GL.glScaled(55, 55, 55); { // front GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0.0f, 0.0f, 1.0f); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-1.0f, -1.0f, 1.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(1.0f, -1.0f, 1.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(1.0f, 1.0f, 1.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-1.0f, 1.0f, 1.0f); GL.glEnd(); // back GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[1]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0.0f, 0.0f, -1.0f); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(1.0f, -1.0f, -1.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(-1.0f, -1.0f, -1.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(-1.0f, 1.0f, -1.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(1.0f, 1.0f, -1.0f); GL.glEnd(); // left GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[2]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(-1.0f, 0.0f, 0.0f); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-1.0f, -1.0f, -1.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(-1.0f, -1.0f, 1.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(-1.0f, 1.0f, 1.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-1.0f, 1.0f, -1.0f); GL.glEnd(); // right GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[3]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(1.0f, 0.0f, 0.0f); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(1.0f, -1.0f, 1.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(1.0f, -1.0f, -1.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(1.0f, 1.0f, -1.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(1.0f, 1.0f, 1.0f); GL.glEnd(); // top GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[4]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0.0f, 1.0f, 0.0f); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-1.0f, 1.0f, 1.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(1.0f, 1.0f, 1.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(1.0f, 1.0f, -1.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-1.0f, 1.0f, -1.0f); GL.glEnd(); // bottom GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[5]); GL.glBegin(GL.GL_QUADS); GL.glNormal3f(0.0f, -1.0f, 0.0f); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-1.0f, -1.0f, -1.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(1.0f, -1.0f, -1.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(1.0f, -1.0f, 1.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-1.0f, -1.0f, 1.0f); GL.glEnd(); } }