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(); }
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(); }
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); }
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); } }
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); }
/// <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); } }