glNormal3f() private method

private glNormal3f ( float nx, float ny, float nz ) : void
nx float
ny float
nz float
return void
示例#1
0
        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);
        }
示例#2
0
        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();
        }
示例#3
0
文件: cOGL.cs 项目: matanmaron/Tanks
        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);
        }
示例#4
0
        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();
 }
示例#6
0
        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();
        }
示例#7
0
 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);
 }
示例#8
0
        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();
            }
        }
示例#9
0
        /// <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;
            }
        }
示例#10
0
        // --- 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();
            }
        }
示例#11
0
        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();
        }
示例#12
0
        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();
        }
示例#13
0
        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();
            }
        }