public override void DrawToy(double[] translateCoords, double[] rotateCoords, bool isShadow) { GL.glTranslated(translateCoords[0], translateCoords[1], translateCoords[2]); if (!isShadow) { GL.glColor3d(1, 1, 1); } else { GL.glDisable(GL.GL_TEXTURE_2D); } GL.glRotated(rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]); if (isShadow) { GL.glCallList(SHADOW_LIST); } else { GL.glCallList(LIST); } GL.glRotated(-rotateCoords[0], rotateCoords[1], rotateCoords[2], rotateCoords[3]); GL.glTranslated(-translateCoords[0], -translateCoords[1], -translateCoords[2]); GL.glDisable(GL.GL_TEXTURE_2D); }
void StartReflaction(int x, int y, int z) { GL.glEnable(GL.GL_BLEND); GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); //only floor, draw only to STENCIL buffer GL.glEnable(GL.GL_STENCIL_TEST); GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF); // draw floor always GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE); GL.glDisable(GL.GL_DEPTH_TEST); GL.glPushMatrix(); GL.glRotated(90, 0, 1, 0); GL.glTranslatef(0, -4, 0); mirror.Draw(); GL.glPopMatrix(); GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE); GL.glEnable(GL.GL_DEPTH_TEST); // reflection is drawn only where STENCIL buffer value equal to 1 GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF); GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); GL.glEnable(GL.GL_STENCIL_TEST); // draw reflected scene GL.glPushMatrix(); GL.glScalef(x, y, z); //swap on Z axis }
public void Draw() { if (m_uint_DC == 0 || m_uint_RC == 0) { return; } GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); GL.glLoadIdentity(); GL.glTranslatef(-1.0f, -1.0f, -6.0f); drawAxises(); updateTimer(); GL.glTranslated(0.5f, 0.0f, 0.5f); GL.glRotatef(m_RotateAngle, 0, 1.0f, 0); // y axis rotate GL.glRotatef(m_FallAngle, 1, 0, 0); // x axis rotate GL.glTranslated(-0.5f, 0.0f, -0.5f); GL.glEnable(GL.GL_TEXTURE_2D); GL.glBindTexture(GL.GL_TEXTURE_2D, m_Texture[0]); drawDreidel(); GL.glDisable(GL.GL_TEXTURE_2D); GL.glFlush(); WGL.wglSwapBuffers(m_uint_DC); }
void DrawFigures() { GL.glEnable(GL.GL_COLOR_MATERIAL); GL.glEnable(GL.GL_LIGHT0); GL.glEnable(GL.GL_LIGHTING); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! GL.glRotatef(ROBOT_angle, 0, 0, 1); GL.glCallList(ROBOT_LIST); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // saw GL.glLineStipple(1, 0x1243); GL.glLineWidth(3); GL.glEnable(GL.GL_LINE_STIPPLE); GL.glColor3f(1, 1, 0); //yellow GL.glBegin(GL.GL_LINES); float angle; for (int i = 0; i <= 9; i++) { angle = alpha + i * 6.283f / 10; GL.glVertex3d(0.5f * r * Math.Cos(angle), 0.5f * r * Math.Sin(angle), 0.01f); GL.glVertex3d(1.5f * r * Math.Cos(angle + 0.6), 1.5f * r * Math.Sin(angle + 0.6), 0.01f); } GL.glEnd(); GL.glLineWidth(1); GL.glDisable(GL.GL_LINE_STIPPLE); }
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 DrawOldAxes() { //for this time //Lights positioning is here!!! float [] pos = new float[4]; pos[0] = 10; pos[1] = 10; pos[2] = 10; pos[3] = 1; GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos); GL.glDisable(GL.GL_LIGHTING); //INITIAL axes GL.glEnable(GL.GL_LINE_STIPPLE); GL.glLineStipple(1, 0xFF00); // dotted GL.glBegin(GL.GL_LINES); //x RED GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(-3.0f, 0.0f, 0.0f); GL.glVertex3f(3.0f, 0.0f, 0.0f); //y GREEN GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(0.0f, -3.0f, 0.0f); GL.glVertex3f(0.0f, 3.0f, 0.0f); //z BLUE GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(0.0f, 0.0f, -3.0f); GL.glVertex3f(0.0f, 0.0f, 3.0f); GL.glEnd(); GL.glDisable(GL.GL_LINE_STIPPLE); }
protected void DrawOldAxes() { if (enableDefaultCoordSystem) { GL.glEnable(GL.GL_LINE_STIPPLE); GL.glLineStipple(1, 0xFF00); GL.glBegin(GL.GL_LINES); //X - Red GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glVertex3f(0.0f, 0.0f, 0.0f); GL.glVertex3f(10.0f, 0.0f, 0.0f); //Y - Greed GL.glColor3f(0.0f, 1.0f, 0.0f); GL.glVertex3f(0.0f, 0.0f, 0.0f); GL.glVertex3f(0.0f, 10.0f, 0.0f); //Z - Blue GL.glColor3f(0.0f, 0.0f, 1.0f); GL.glVertex3f(0.0f, 0.0f, 0.0f); GL.glVertex3f(0.0f, 0.0f, 10.0f); GL.glEnd(); GL.glDisable(GL.GL_LINE_STIPPLE); } }
void DrawAll() { GL.glDisable(GL.GL_LIGHTING); DrawGrid(worldsize, false); //floor DrawGrid(worldsize, true); //sky GL.glEnable(GL.GL_LIGHTING); }
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 DrawLight() { // call this function in order to apply lightning on the objects GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, LightPosition); GL.glDisable(GL.GL_LIGHTING); //disable lightning in order to glColor3f to work, otherwise spehre color will not been affected //Draw Yellow Light Source light.Color = Color.Yellow; light.Radius = 0.1f; light.Translate(LightPosition[0], LightPosition[1], LightPosition[2]); light.Draw(); ////draw projection line from source to plane //GL.glBegin(GL.GL_LINES); //GL.glColor3d(0.5, 0.5, 0); //GL.glVertex3d(LightPosition[0], LightPosition[1], LightPosition[2]); //GL.glVertex3d(LightPosition[0], floor[0, 2] - 0.01, LightPosition[2]); //GL.glEnd(); axes.XLen = 6; axes.YLen = 6; axes.ZLen = 6; axes.XColor = Color.Red; axes.YColor = Color.Green; axes.ZColor = Color.Blue; // axes.Translate(3.0f, -3.0f, 0.0f); // axes.Rotate(90.0f, 1.0f, 0.0f, 0.0f); //axes.Draw(); }
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); }
private void DrawSea() { GL.glDisable(GL.GL_LIGHTING); float dup = GlobalProperties.seaDuplicates; GL.glEnable(GL.GL_TEXTURE_2D); GL.glColor4f(1.0f, 1.0f, 1.0f, 0.3f); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]); GL.glBegin(GL.GL_QUADS); float cor = GlobalProperties.seaSize / 2; GL.glTexCoord2f(0, 0); GL.glVertex3f(-cor, -cor, 0.0f); GL.glTexCoord2f(0, dup); GL.glVertex3f(cor, -cor, 0.0f); GL.glTexCoord2f(dup, dup); GL.glVertex3f(cor, cor, 0.0f); GL.glTexCoord2f(dup, 0); GL.glVertex3f(-cor, cor, 0.0f); GL.glEnd(); GL.glDisable(GL.GL_TEXTURE_2D); GL.glEnable(GL.GL_LIGHTING); }
private void DrawIsland() { float moveSphere = GlobalProperties.islandRadius - GlobalProperties.islandHeight; float rotate = 45.0f; GL.glEnable(GL.GL_CLIP_PLANE0); double[] clipPalane0 = { 0.0, 0.0, 1.0, 0.0 }; GL.glClipPlane(GL.GL_CLIP_PLANE0, clipPalane0); GL.glTranslatef(0.0f, 0.0f, -moveSphere); GL.glEnable(GL.GL_TEXTURE_2D); GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[1]); GL.glRotatef(rotate, 1.0f, 1.0f, 0.0f); GLUquadric obj = GLU.gluNewQuadric(); GLU.gluQuadricTexture(obj, 1); GLU.gluSphere(obj, GlobalProperties.islandRadius, 32, 32); GLU.gluDeleteQuadric(obj); GL.glRotatef(-rotate, 1.0f, 1.0f, 0.0f); GL.glDisable(GL.GL_TEXTURE_2D); GL.glTranslatef(0.0f, 0.0f, moveSphere); GL.glDisable(GL.GL_CLIP_PLANE0); }
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); }
void DrawLight() { GL.glTranslatef(pos[0], pos[1], pos[2]); GL.glColor3f(1, 1, 0); GLUT.glutSolidSphere(0.8, 10, 10); GL.glTranslatef(-pos[0], -pos[1], -pos[2]); GL.glEnd(); GL.glDisable(GL.GL_LIGHTING); }
void DrawTexturedCube() { GL.glEnable(GL.GL_TEXTURE_2D); GL.glDisable(GL.GL_BLEND); GL.glColor3d(1, 1, 1); GL.glDisable(GL.GL_LIGHTING); // front GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, 300.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, 300.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, 300.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, 300.0f); GL.glEnd(); // back GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[0]); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, -300.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, -300.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, -300.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, -300.0f); GL.glEnd(); // left GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[2]); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, 300.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(-300.0f, -0.01f, -300.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, -300.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, 300.0f); GL.glEnd(); // right GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[3]); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, -300.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(300.0f, -0.01f, 300.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, 300.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, -300.0f); GL.glEnd(); // top GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[4]); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2f(0.0f, 0.0f); GL.glVertex3f(-300.0f, 300.0f, -300.0f); GL.glTexCoord2f(1.0f, 0.0f); GL.glVertex3f(300.0f, 300.0f, -300.0f); GL.glTexCoord2f(1.0f, 1.0f); GL.glVertex3f(300.0f, 300.0f, 300.0f); GL.glTexCoord2f(0.0f, 1.0f); GL.glVertex3f(-300.0f, 300.0f, 300.0f); GL.glEnd(); GL.glDisable(GL.GL_TEXTURE_2D); GL.glEnable(GL.GL_BLEND); }
private void DrawPillar(double baseRadius, double topRadius, double height) { GL.glEnable(GL.GL_TEXTURE_2D); GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[2]); GLUquadric obj = GLU.gluNewQuadric(); GLU.gluQuadricTexture(obj, 2); GLU.gluCylinder(obj, baseRadius, topRadius, height, 32, 32); GLU.gluDeleteQuadric(obj); GL.glDisable(GL.GL_TEXTURE_2D); }
void drawStar(Star star, bool isForShade) { if (star.toDraw == true) { GL.glPushMatrix(); GL.glTranslatef(0f, 0f, 1f); GL.glTranslatef(star.X + (float)xExisOrigin, star.Y + (float)yExisOrigin, 3 - Math.Abs(2f * (float)Math.Cos(ballZMovement))); GL.glRotatef(ballZtranslate, 0, 0, 1f); if (!isForShade) { GL.glEnable(GL.GL_TEXTURE_2D); GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[6]); GL.glEnable(GL.GL_TEXTURE_GEN_S); GL.glEnable(GL.GL_TEXTURE_GEN_T); GL.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, (int)GL.GL_SPHERE_MAP); GL.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, (int)GL.GL_SPHERE_MAP); } else { GL.glColor3d(0.2, 0.2, 0.2); } for (int i = 0; i < 5; i++) { GL.glRotatef(72, 1, 0, 0); GL.glBegin(GL.GL_QUADS); GL.glVertex3f(0f, 0f, 0); GL.glVertex3f(0f, (float)Math.Sin(36), 1); GL.glVertex3f(0f, 0, 3f); GL.glVertex3f(0f, -(float)Math.Sin(36), 1); GL.glEnd(); } if (!isForShade) { GL.glDisable(GL.GL_TEXTURE_GEN_S); GL.glDisable(GL.GL_TEXTURE_GEN_T); GL.glDisable(GL.GL_TEXTURE_2D); } GL.glPopMatrix(); } }
protected void DrawRoom() { GL.glColor3f(1.0f, 1.0f, 1.0f); GL.glEnable(GL.GL_TEXTURE_2D); GL.glBindTexture(GL.GL_TEXTURE_2D, texture[0]); GL.glDisable(GL.GL_LIGHTING); GL.glBegin(GL.GL_QUADS); GL.glTexCoord2d(1, 1); GL.glVertex3d(-100, 100, 100); GL.glTexCoord2d(0.75, 1); GL.glVertex3d(100, 100, 100); GL.glTexCoord2d(0.75, 0); GL.glVertex3d(100, -100, 100); GL.glTexCoord2d(1, 0); GL.glVertex3d(-100, -100, 100); GL.glTexCoord2d(0.25, 1); GL.glVertex3d(-100, 100, -100); GL.glTexCoord2d(0.5, 1); GL.glVertex3d(100, 100, -100); GL.glTexCoord2d(0.5, 0); GL.glVertex3d(100, -100, -100); GL.glTexCoord2d(0.25, 0); GL.glVertex3d(-100, -100, -100); GL.glTexCoord2d(0.25, 1); GL.glVertex3d(-100, 100, -100); GL.glTexCoord2d(0, 1); GL.glVertex3d(-100, 100, 100); GL.glTexCoord2d(0, 0); GL.glVertex3d(-100, -100, 100); GL.glTexCoord2d(0.25, 0); GL.glVertex3d(-100, -100, -100); GL.glTexCoord2d(0.75, 1); GL.glVertex3d(100, 100, 100); GL.glTexCoord2d(0.5, 1); GL.glVertex3d(100, 100, -100); GL.glTexCoord2d(0.5, 0); GL.glVertex3d(100, -100, -100); GL.glTexCoord2d(0.75, 0); GL.glVertex3d(100, -100, 100); GL.glEnd(); GL.glDisable(GL.GL_TEXTURE_2D); }
protected void DrawFloor() { GL.glEnable(GL.GL_LIGHTING); GL.glEnable(GL.GL_COLOR_MATERIAL); GL.glColor4d(0, 0, 1, 0.3); GL.glBegin(GL.GL_QUADS); GL.glVertex3d(-7, -4, 7); GL.glVertex3d(7, -4, 7); GL.glVertex3d(7, -4, -7); GL.glVertex3d(-7, -4, -7); GL.glEnd(); GL.glDisable(GL.GL_LIGHTING); }
private void DrawAll() { GL.glEnable(GL.GL_BLEND); GL.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); //only floor, draw only to STENCIL buffer GL.glEnable(GL.GL_STENCIL_TEST); GL.glStencilOp(GL.GL_REPLACE, GL.GL_REPLACE, GL.GL_REPLACE); GL.glStencilFunc(GL.GL_ALWAYS, 1, 0xFFFFFFFF); // draw floor always GL.glColorMask((byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE, (byte)GL.GL_FALSE); GL.glDisable(GL.GL_DEPTH_TEST); DrawSea(); // restore regular settings GL.glColorMask((byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE, (byte)GL.GL_TRUE); GL.glEnable(GL.GL_DEPTH_TEST); // reflection is drawn only where STENCIL buffer value equal to 1 GL.glStencilFunc(GL.GL_EQUAL, 1, 0xFFFFFFFF); GL.glStencilOp(GL.GL_KEEP, GL.GL_KEEP, GL.GL_KEEP); GL.glEnable(GL.GL_STENCIL_TEST); // draw reflected scene GL.glPushMatrix(); GL.glEnable(GL.GL_CULL_FACE); GL.glScalef(1, 1, -1); //swap on Z axis GL.glCullFace(GL.GL_FRONT); DrawReflected(); GL.glCullFace(GL.GL_BACK); DrawReflected(); GL.glDisable(GL.GL_CULL_FACE); GL.glPopMatrix(); // really draw floor //( half-transparent ( see its color's alpha byte))) // in order to see reflected objects GL.glDepthMask((byte)GL.GL_FALSE); DrawSea(); GL.glDepthMask((byte)GL.GL_TRUE); // Disable GL.GL_STENCIL_TEST to show All, else it will be cut on GL.GL_STENCIL GL.glDisable(GL.GL_STENCIL_TEST); DrawReflected(); }
void DrawLights() { //GL.glPushMatrix(); GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPos); //Draw Light Source GL.glDisable(GL.GL_LIGHTING); GL.glTranslatef(lightPos[0], lightPos[1], lightPos[2]); //Yellow Light source GL.glColor3f(1, 1, 0); GLUT.glutSolidSphere(0.05, 8, 8); GL.glTranslatef(-lightPos[0], -lightPos[1], -lightPos[2]); //main System draw GL.glEnable(GL.GL_LIGHTING); //GL.glPopMatrix(); }
void DrawBounds() { if (isBounds) { GL.glScalef(0.99f, 0.99f, 0.99f); GL.glLineWidth(2); GL.glColor3f(1.0f, 0.0f, 0.0f); GL.glDisable(GL.GL_LIGHTING); GL.glBegin(GL.GL_LINE_LOOP); GL.glVertex3f(-1, -1, -1); GL.glVertex3f(1, -1, -1); GL.glVertex3f(1, -1, 1); GL.glVertex3f(-1, -1, 1); GL.glEnd(); GL.glBegin(GL.GL_LINE_LOOP); GL.glVertex3f(-1, 1, -1); GL.glVertex3f(1, 1, -1); GL.glVertex3f(1, 1, 1); GL.glVertex3f(-1, 1, 1); GL.glEnd(); GL.glBegin(GL.GL_LINES); GL.glVertex3f(-1, -1, -1); GL.glVertex3f(-1, 1, -1); GL.glVertex3f(1, -1, -1); GL.glVertex3f(1, 1, -1); GL.glVertex3f(1, -1, 1); GL.glVertex3f(1, 1, 1); GL.glVertex3f(-1, -1, 1); GL.glVertex3f(-1, 1, 1); GL.glEnd(); GL.glScalef(1.0f / 0.99f, 1.0f / 0.99f, 1.0f / 0.99f); } GL.glEnable(GL.GL_COLOR_MATERIAL); GL.glEnable(GL.GL_LIGHTING); GL.glEnable(GL.GL_LIGHT0); GL.glTranslatef(0.1f, 0.2f, -0.7f); GL.glColor3f(0, 1, 0); GLU.gluSphere(obj, 0.05, 16, 16); GL.glTranslatef(-0.1f, -0.2f, 0.7f); GL.glDisable(GL.GL_LIGHTING); }
protected void DrawLightSource() { if (enableLightSource) { GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition); GL.glEnable(GL.GL_LIGHTING); GL.glEnable(GL.GL_COLOR_MATERIAL); GL.glTranslated(lightPosition[0], lightPosition[1], lightPosition[2]); GL.glColor3d(1, 1, 0); GLUT.glutSolidSphere(0.5, 50, 50); GL.glTranslated(-lightPosition[0], -lightPosition[1], -lightPosition[2]); } else { GL.glDisable(GL.GL_LIGHTING); } }
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 DrawFiguresRef() { GL.glPushMatrix(); // must be in scene to be reflected too GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos); //Draw Light Source GL.glDisable(GL.GL_LIGHTING); GL.glTranslatef(pos[0], pos[1], pos[2]); //Yellow Light source GL.glColor3f(1, 1, 0); GL.glTranslatef(-pos[0], -pos[1], -pos[2]); //projection line from source to plane GL.glBegin(GL.GL_LINES); GL.glColor3d(0.5, 0.5, 0); GL.glVertex3d(pos[0], pos[1], 0); GL.glVertex3d(pos[0], pos[1], pos[2]); GL.glEnd(); GL.glEnable(GL.GL_LIGHTING); GL.glRotated(intOptionB, 0, 0, 1); GL.glColor3f(1, 0, 0); GL.glTranslated(0, -0.5, 1); GL.glRotated(intOptionC, 1, 1, 1); GL.glRotated(-intOptionC, 1, 1, 1); GL.glTranslated(0, -0.5, -1); GL.glTranslated(1, 2, 1.5); GL.glRotated(90, 1, 0, 0); GL.glColor3d(0, 1, 1); GL.glRotated(intOptionB, 1, 0, 0); GL.glRotated(-intOptionB, 1, 0, 0); GL.glRotated(-90, 1, 0, 0); GL.glTranslated(-1, -2, -1.5); GL.glRotated(intOptionB, 0, 0, 1); GL.glPopMatrix(); }
private void DrawBackground() { GL.glDisable(GL.GL_LIGHTING); GL.glEnable(GL.GL_TEXTURE_2D); GL.glColor4f(1.0f, 1.0f, 1.0f, 0.5f); GL.glBindTexture(GL.GL_TEXTURE_2D, Textures[4]); float cor = GlobalProperties.seaSize / 2; GLUquadric obj = GLU.gluNewQuadric(); GLU.gluQuadricTexture(obj, 4); GLU.gluCylinder(obj, cor, cor, cor, 32, 32); GLU.gluDeleteQuadric(obj); GL.glDisable(GL.GL_TEXTURE_2D); GL.glEnable(GL.GL_LIGHTING); }
void drawLake() { GL.glEnable(GL.GL_LIGHTING); GL.glCallList(WATER_MAT); GL.glPushMatrix(); if (ScrollValue[16] >= 0) { GL.glScaled(1, 1, 1 + ScrollValue[16]); } else { GL.glScaled(1 + ScrollValue[16], 1, 1); } GL.glTranslated(ScrollValue[12], 0, ScrollValue[13]); GL.glRotated(90, 1, 0, 0); GLU.gluDisk(obj, 0, ScrollValue[14], 30, 30); GL.glPopMatrix(); GL.glDisable(GL.GL_LIGHTING); }
public void Draw(bool isForShades) { GL.glPushMatrix(); GL.glScalef(-1, 1, 1); GL.glRotatef(-90, 0, 1, 0); GL.glTranslatef(7, 0, 0); GL.glTranslatef(0, 0, (Drive % 46) - 23); if (!isForShades) { GL.glEnable(GL.GL_LIGHTING); GL.glCallList(CAR); } else { GL.glDisable(GL.GL_LIGHTING); GL.glCallList(CAR_SHADOW); } GL.glPopMatrix(); }
public void DrawFigures() { GL.glPushMatrix(); GL.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, pos); //Draw Light Source GL.glDisable(GL.GL_LIGHTING); GL.glTranslatef(pos[0], pos[1], pos[2]); //Yellow Light source GL.glColor3f(1, 1, 0); GLUT.glutSolidSphere(0.05, 8, 8); GL.glTranslatef(-pos[0], -pos[1], -pos[2]); //main System draw GL.glEnable(GL.GL_LIGHTING); DrawRobot(false); drawStars(false); //end of regular show //!!!!!!!!!!!!! GL.glPopMatrix(); //!!!!!!!!!!!!! //SHADING begin //we'll define cubeXform matrix in MakeShadowMatrix Sub // Disable lighting, we'll just draw the shadow //else instead of shadow we'll see stange projection of the same objects GL.glDisable(GL.GL_LIGHTING); // wall shadow //!!!!!!!!!!!!! GL.glPushMatrix(); //!!!!!!!!!!!! MakeShadowMatrix(ground); GL.glMultMatrixf(cubeXform); DrawRobot(true); drawStars(true); //!!!!!!!!!!!!! GL.glPopMatrix(); //!!!!!!!!!!!!! }