\r
private void ResetTerrain()\r
{\r
+ ResetTerrain(true);\r
+ }\r
+\r
+ private void ResetTerrain(bool removeImage)\r
+ {\r
if (terrainImage != null)\r
{\r
terrainImage.Dispose();\r
terrainImage = null;\r
}\r
\r
- terrainTexture = -1;\r
-\r
- if (terrainVBO == -1)\r
+ if (terrainVBO != -1)\r
{\r
GL.DeleteBuffers(1, ref terrainVBO);\r
terrainVBO = -1;\r
}\r
\r
- if (terrainIndexVBO == -1)\r
+ if (terrainIndexVBO != -1)\r
{\r
GL.DeleteBuffers(1, ref terrainIndexVBO);\r
terrainIndexVBO = -1;\r
}\r
\r
+ if (removeImage)\r
+ {\r
+ if (terrainTexture != -1)\r
+ {\r
+ GL.DeleteTexture(terrainTexture);\r
+ terrainTexture = -1;\r
+ }\r
+ }\r
+\r
fetchingTerrainTexture = false;\r
TerrainModified = true;\r
}\r
TerrainModified = false;\r
}\r
\r
- void CheckTerrainTexture()\r
+ void UpdateTerrainTexture()\r
{\r
- if (terrainTexture != -1) return;\r
-\r
if (!fetchingTerrainTexture)\r
{\r
fetchingTerrainTexture = true;\r
fetchingTerrainTexture = false;\r
});\r
}\r
- else if (terrainImage != null)\r
- {\r
- terrainTexture = GLLoadImage(terrainImage, false);\r
- }\r
-\r
}\r
\r
private void RenderTerrain()\r
\r
if (TerrainModified)\r
{\r
- ResetTerrain();\r
+ ResetTerrain(false);\r
UpdateTerrain();\r
+ UpdateTerrainTexture();\r
}\r
\r
- CheckTerrainTexture();\r
+ if (terrainImage != null)\r
+ {\r
+ if (terrainTexture != -1)\r
+ {\r
+ GL.DeleteTexture(terrainTexture);\r
+ }\r
+\r
+ terrainTexture = GLLoadImage(terrainImage, false);\r
+ terrainImage.Dispose();\r
+ terrainImage = null;\r
+ }\r
\r
if (terrainTexture == -1)\r
{\r