Пример #1
0
        public override void Draw(SharpGL.OpenGL gl)
        {
            gl.PushMatrix();
            gl.PushAttrib(AttributeMask.All);
            gl.PushClientAttrib(OpenGL.GL_CLIENT_ALL_ATTRIB_BITS);

            gl.VertexPointer(3, 0, vertexs);
            gl.NormalPointer(OpenGL.GL_FLOAT, 0, normals);
            gl.TexCoordPointer(2, OpenGL.GL_FLOAT, 0, texCoord);

            gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
            //gl.EnableClientState(OpenGL.GL_COLOR_ARRAY);
            gl.EnableClientState(OpenGL.GL_NORMAL_ARRAY);
            gl.EnableClientState(OpenGL.GL_TEXTURE_COORD_ARRAY);

            gl.Translate(position.x, position.y + sizeY / 2, position.z);

            gl.Color(color.GetInArrWithAlpha());

            if (texture != null)
            {
                gl.Enable(OpenGL.GL_TEXTURE_2D);
                texture.Bind(gl);
            }
            else
            {
                gl.Disable(OpenGL.GL_TEXTURE_2D);
            }

            gl.DrawArrays(OpenGL.GL_QUADS, 0, 24);

            gl.PopClientAttrib();
            gl.PopAttrib();
            gl.PopMatrix();
        }
Пример #2
0
        public override void Draw(SharpGL.OpenGL gl)
        {
            gl.PushMatrix();
            gl.PushAttrib(AttributeMask.All);
            gl.PushClientAttrib(OpenGL.GL_CLIENT_ALL_ATTRIB_BITS);

            gl.VertexPointer(3, 0, vertexs);
            gl.NormalPointer(OpenGL.GL_FLOAT, 0, normals);
            gl.TexCoordPointer(2, OpenGL.GL_FLOAT, 0, texCoord);

            gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
            gl.EnableClientState(OpenGL.GL_NORMAL_ARRAY);
            gl.EnableClientState(OpenGL.GL_TEXTURE_COORD_ARRAY);

            gl.Translate(position.x, position.y + sizeY / 2, position.z);

            gl.Color(color.GetInArrWithAlpha());

            DrawArrayWithTexture(gl, OpenGL.GL_QUADS, 0, 4, textureZplus);   //z+
            DrawArrayWithTexture(gl, OpenGL.GL_QUADS, 4, 4, textureYplus);   //y+
            DrawArrayWithTexture(gl, OpenGL.GL_QUADS, 8, 4, textureZminus);  //z-
            DrawArrayWithTexture(gl, OpenGL.GL_QUADS, 12, 4, textureYminus); //y-
            DrawArrayWithTexture(gl, OpenGL.GL_QUADS, 16, 4, textureXminus); //x-
            DrawArrayWithTexture(gl, OpenGL.GL_QUADS, 20, 4, texture);       //x+

            gl.PopClientAttrib();
            gl.PopAttrib();
            gl.PopMatrix();
        }
Пример #3
0
 private void RenderVertices_VertexArray(OpenGL gl)
 {
     gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
     gl.VertexPointer(3, 0, vertexArrayValues);
     gl.DrawArrays(OpenGL.GL_POINTS, 0, 2);//vertices.Length);
     gl.DisableClientState(OpenGL.GL_VERTEX_ARRAY);
 }
Пример #4
0
        public void Render(SharpGL.OpenGL gl, RenderMode renderMode)
        {
            if (this._colorVertexes.Size <= 0)
            {
                return;
            }

            unsafe
            {
                gl.Enable(OpenGL.GL_DEPTH_TEST);
                gl.Enable(0X8861);

                gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
                gl.EnableClientState(OpenGL.GL_COLOR_ARRAY);

                gl.VertexPointer(3, OpenGL.GL_FLOAT, 0, (IntPtr)this._colorVertexes.Centers);
                gl.ColorPointer(3, OpenGL.GL_BYTE, 0, (IntPtr)this._colorVertexes.Colors);

                gl.DrawArrays(OpenGL.GL_POINTS, 0, this._colorVertexes.Size);

                gl.DisableClientState(OpenGL.GL_VERTEX_ARRAY);
                gl.DisableClientState(OpenGL.GL_COLOR_ARRAY);
            }
        }
Пример #5
0
        public void draw(OpenGL gl)
        {
            if (net)
                gl.CullFace(OpenGL.GL_FRONT);
            else
                gl.CullFace(OpenGL.GL_BACK);
            if (vertices != null)
            {
                gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
                gl.VertexPointer(3, OpenGL.GL_FLOAT, 0, vertices);
            }
            if (normals != null)
            {
                gl.EnableClientState(OpenGL.GL_NORMAL_ARRAY);
                gl.NormalPointer(OpenGL.GL_FLOAT, 0, normals);
            }
            if (colors != null)
            {
                gl.EnableClientState(OpenGL.GL_COLOR_ARRAY);
                gl.ColorPointer(3, OpenGL.GL_UNSIGNED_BYTE, 0, colors);
            }
            if (textCoords != null)
            {
                gl.EnableClientState(OpenGL.GL_TEXTURE_COORD_ARRAY);
                gl.TexCoordPointer(2, OpenGL.GL_FLOAT, 0, textCoords);
            }
            gl.FrontFace(OpenGL.GL_CCW);
            if (lengths != null && strips != null)
                for (int i = 0; i < strips.Count; i++)
                {
                    gl.DrawElements(OpenGL.GL_TRIANGLE_STRIP, lengths[i], OpenGL.GL_UNSIGNED_INT, strips[i]);
                }
            if (doubleSurface)
            {
                if (doubleNormals != null)
                {
                    gl.NormalPointer(OpenGL.GL_FLOAT, 0, doubleNormals);
                }
                gl.FrontFace(OpenGL.GL_CW);

                for (int i = 0; i < strips.Count; i++)
                {
                    gl.DrawElements(OpenGL.GL_TRIANGLE_STRIP, lengths[i], OpenGL.GL_UNSIGNED_INT, strips[i]);
                }
            }

            gl.DisableClientState(OpenGL.GL_VERTEX_ARRAY);
            gl.DisableClientState(OpenGL.GL_COLOR_ARRAY);
            gl.DisableClientState(OpenGL.GL_NORMAL_ARRAY);
            gl.DisableClientState(OpenGL.GL_TEXTURE_COORD_ARRAY);
        }
Пример #6
-29
 /// <summary>
 /// Function to draw the model
 /// </summary>
 private void drawModel(OpenGL gl) 
 {
     if(l_vboId != null)
     {
         gl.EnableClientState(OpenGL.GL_VERTEX_ARRAY);
         gl.EnableClientState(OpenGL.GL_COLOR_ARRAY);
         // itering over each list of points
         for(int k = 0; k < l_vboId.Count; k++)
         {
             gl.PushMatrix();
                 //transformations
                 gl.Scale(1.0f / f_scale, 1.0f / f_scale, 1.0f / f_scale);
                 gl.Translate(-v_center.X, -v_center.Y, -v_center.Z);
                 //vertexes
                 gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, l_vboId[k][0]);
                 gl.VertexPointer(3, OpenGL.GL_FLOAT, 0, BUFFER_OFFSET_ZERO);
                 //color
                 gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, l_vboId[k][1]);
                 gl.ColorPointer(3, OpenGL.GL_FLOAT, 0, BUFFER_OFFSET_ZERO);
                 //draw l_sizes[k] points
                 gl.DrawArrays(OpenGL.GL_POINTS, 0, l_sizes[k]);
             gl.PopMatrix();
         }
         gl.DisableClientState(OpenGL.GL_VERTEX_ARRAY);
         gl.DisableClientState(OpenGL.GL_COLOR_ARRAY);
         gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, 0);
     }
 }