From: Latif Khalifa Date: Sun, 10 Jul 2011 13:19:42 +0000 (+0000) Subject: Detect if we have VBO support. X-Git-Tag: 2.8~405 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=71c51339e77b14508a93de384d0beff35eb20620;p=radegast%2Fradegast.git Detect if we have VBO support. git-svn-id: https://radegast.googlecode.com/svn/trunk@966 f7a694da-4d33-11de-9ad6-1127a62b9fcd --- diff --git a/Radegast/GUI/Rendering/Rendering.cs b/Radegast/GUI/Rendering/Rendering.cs index 16cd1cc..4083714 100644 --- a/Radegast/GUI/Rendering/Rendering.cs +++ b/Radegast/GUI/Rendering/Rendering.cs @@ -169,6 +169,7 @@ namespace Radegast.Rendering void frmPrimWorkshop_Disposed(object sender, EventArgs e) { + RenderingEnabled = false; Application.Idle -= new EventHandler(Application_Idle); PendingTextures.Close(); @@ -180,8 +181,8 @@ namespace Radegast.Rendering Client.Network.SimChanged -= new EventHandler(Network_SimChanged); Client.Self.TeleportProgress -= new EventHandler(Self_TeleportProgress); Client.Terrain.LandPatchReceived -= new EventHandler(Terrain_LandPatchReceived); - Instance.Netcom.ClientDisconnected -= new EventHandler(Netcom_ClientDisconnected); //Client.Avatars.AvatarAnimation -= new EventHandler(AvatarAnimationChanged); + Client.Avatars.AvatarAppearance -= new EventHandler(Avatars_AvatarAppearance); if (instance.Netcom != null) { @@ -484,7 +485,10 @@ namespace Radegast.Rendering GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); - hasMipmap = GL.GetString(StringName.Extensions).Contains("GL_SGIS_generate_mipmap"); + string glExtensions = GL.GetString(StringName.Extensions); + hasMipmap = glExtensions.Contains("GL_SGIS_generate_mipmap"); + useVBO = glExtensions.Contains("ARB_vertex_buffer_object"); + // Double check if we have mipmap ability if (hasMipmap) { diff --git a/Radegast/GUI/Rendering/RenderingHelpers.cs b/Radegast/GUI/Rendering/RenderingHelpers.cs index e1d300c..3142a26 100644 --- a/Radegast/GUI/Rendering/RenderingHelpers.cs +++ b/Radegast/GUI/Rendering/RenderingHelpers.cs @@ -34,7 +34,7 @@ namespace Radegast.Rendering Vertex[] vArray = face.Vertices.ToArray(); GL.GenBuffers(1, out VertexVBO); GL.BindBuffer(BufferTarget.ArrayBuffer, VertexVBO); - GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(vArray.Length * VertexSize), vArray, BufferUsageHint.StreamDraw); + GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(vArray.Length * VertexSize), vArray, BufferUsageHint.StaticDraw); } if (IndexVBO == -1) @@ -42,7 +42,7 @@ namespace Radegast.Rendering ushort[] iArray = face.Indices.ToArray(); GL.GenBuffers(1, out IndexVBO); GL.BindBuffer(BufferTarget.ElementArrayBuffer, IndexVBO); - GL.BufferData(BufferTarget.ElementArrayBuffer, (IntPtr)(iArray.Length * sizeof(ushort)), iArray, BufferUsageHint.StreamDraw); + GL.BufferData(BufferTarget.ElementArrayBuffer, (IntPtr)(iArray.Length * sizeof(ushort)), iArray, BufferUsageHint.StaticDraw); } } }