]> git.mxchange.org Git - simgear.git/commitdiff
Stuart :
authorfredb <fredb>
Mon, 24 Nov 2008 20:26:12 +0000 (20:26 +0000)
committerfredb <fredb>
Mon, 24 Nov 2008 20:26:12 +0000 (20:26 +0000)
> Warning: detected OpenGL error 'valeur non valide' after RenderBin::draw(,)

Fixed in the patch below. For some reason the shader didn't like index 16 being used...

The patch also fixes the chequer-board effect that was causing very sparse cloud cover.

simgear/scene/sky/CloudShaderGeometry.hxx
simgear/scene/sky/cloudfield.cxx

index 6e6ac4d203416e21501ead75f4be54d6b6804625..50225f6537dfcb30bcc3983dc72aeb858bc835c9 100755 (executable)
@@ -42,12 +42,12 @@ class CloudShaderGeometry : public osg::Drawable
 {
     public:
         
+        const static unsigned int CLOUD_HEIGHT = 10;
         const static unsigned int TEXTURE_INDEX_X = 11;
         const static unsigned int TEXTURE_INDEX_Y = 12;
         const static unsigned int WIDTH = 13;
         const static unsigned int HEIGHT = 14;
         const static unsigned int SHADE = 15;
-        const static unsigned int CLOUD_HEIGHT = 16;
         
         CloudShaderGeometry()
         { 
index 0d225a0a3ae05dd1d857f420c1aacf966deb4316..f901b0f4d5fe949628488e17e3111ca4cf769d86 100644 (file)
@@ -157,14 +157,16 @@ SGCloudField::SGCloudField() :
         }
     }
     
+    int leafs = QUADTREE_SIZE / BRANCH_SIZE;
+
     for (int x = 0; x < QUADTREE_SIZE; x++) {
         for (int y = 0; y < QUADTREE_SIZE; y++) {
             field_group[x][y]= new osg::Switch;
             field_group[x][y]->setName("3D cloud group");
             
             // Work out where to put this node in the quad tree
-            int i = (int) (BRANCH_SIZE * ((float) x) / ((float) QUADTREE_SIZE));
-            int j = (int) (BRANCH_SIZE * ((float) y) / ((float) QUADTREE_SIZE));
+            int i = x / leafs;
+            int j = y / leafs;
             quad[i][j]->addChild(field_group[x][y].get(), 0.0f, 20000.0f);
         }
     }