{\r
lock (Avatars)\r
{\r
- GL.DisableClientState(ArrayCap.NormalArray);\r
+ GL.EnableClientState(ArrayCap.VertexArray);\r
+ GL.EnableClientState(ArrayCap.TextureCoordArray);\r
\r
foreach (RenderAvatar av in Avatars.Values)\r
{\r
}\r
}\r
\r
- GL.EnableClientState(ArrayCap.NormalArray);\r
-\r
+ GL.DisableClientState(ArrayCap.VertexArray);\r
+ GL.DisableClientState(ArrayCap.TextureCoordArray);\r
}\r
}\r
- \r
#endregion avatars\r
\r
#region Terrian\r
\r
private void RenderTerrain()\r
{\r
+ GL.EnableClientState(ArrayCap.VertexArray);\r
+ GL.EnableClientState(ArrayCap.TextureCoordArray);\r
+ GL.EnableClientState(ArrayCap.NormalArray);\r
+\r
if (TerrainModified)\r
{\r
UpdateTerrain();\r
GL.GenBuffers(1, out terrainVBO);\r
GL.BindBuffer(BufferTarget.ArrayBuffer, terrainVBO);\r
GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(terrainVertices.Length * FaceData.VertexSize), terrainVertices, BufferUsageHint.StreamDraw);\r
+ }\r
+ else\r
+ {\r
+ GL.BindBuffer(BufferTarget.ArrayBuffer, terrainVBO);\r
+ }\r
\r
+ if (terrainIndexVBO == -1)\r
+ {\r
GL.GenBuffers(1, out terrainIndexVBO);\r
GL.BindBuffer(BufferTarget.ElementArrayBuffer, terrainIndexVBO);\r
GL.BufferData(BufferTarget.ElementArrayBuffer, (IntPtr)(terrainIndices.Length * sizeof(ushort)), terrainIndices, BufferUsageHint.StreamDraw);\r
}\r
else\r
{\r
- GL.BindBuffer(BufferTarget.ArrayBuffer, terrainVBO);\r
GL.BindBuffer(BufferTarget.ElementArrayBuffer, terrainIndexVBO);\r
}\r
+\r
+ GL.NormalPointer(NormalPointerType.Float, FaceData.VertexSize, (IntPtr)12);\r
+ GL.TexCoordPointer(2, TexCoordPointerType.Float, FaceData.VertexSize, (IntPtr)(24));\r
+ GL.VertexPointer(3, VertexPointerType.Float, FaceData.VertexSize, (IntPtr)(0));\r
+\r
GL.DrawElements(BeginMode.Triangles, terrainIndices.Length, DrawElementsType.UnsignedShort, IntPtr.Zero);\r
+ \r
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);\r
GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);\r
}\r
GL.BindTexture(TextureTarget.Texture2D, 0);\r
+ GL.DisableClientState(ArrayCap.VertexArray);\r
+ GL.DisableClientState(ArrayCap.TextureCoordArray);\r
+ GL.DisableClientState(ArrayCap.NormalArray);\r
}\r
#endregion Terrain\r
\r
{\r
lock (Prims)\r
{\r
+ GL.EnableClientState(ArrayCap.VertexArray);\r
+ GL.EnableClientState(ArrayCap.TextureCoordArray);\r
+ GL.EnableClientState(ArrayCap.NormalArray);\r
+\r
GL.Enable(EnableCap.ColorMaterial);\r
int primNr = 0;\r
foreach (FacetedMesh mesh in Prims.Values)\r
GL.PopMatrix();\r
}\r
GL.Disable(EnableCap.ColorMaterial);\r
+ GL.DisableClientState(ArrayCap.VertexArray);\r
+ GL.DisableClientState(ArrayCap.TextureCoordArray);\r
+ GL.DisableClientState(ArrayCap.NormalArray);\r
}\r
}\r
\r
// Push the world matrix\r
GL.PushMatrix();\r
\r
- GL.EnableClientState(ArrayCap.VertexArray);\r
- GL.EnableClientState(ArrayCap.TextureCoordArray);\r
- GL.EnableClientState(ArrayCap.NormalArray);\r
-\r
if (Camera.Modified)\r
{\r
GL.GetFloat(GetPName.ProjectionMatrix, out ProjectionMatrix);\r
\r
// Pop the world matrix\r
GL.PopMatrix();\r
-\r
- GL.DisableClientState(ArrayCap.TextureCoordArray);\r
- GL.DisableClientState(ArrayCap.VertexArray);\r
- GL.DisableClientState(ArrayCap.NormalArray);\r
-\r
GL.Flush();\r
}\r
\r