[email protected] 8 years ago
parent
commit
3ad76b9b27

+ 9 - 4
oxygine/src/oxygine/STDRenderer.cpp

@@ -65,9 +65,9 @@ namespace oxygine
     void RenderStateCache::setTexture(int sampler, const spNativeTexture& t)
     {
         OX_ASSERT(sampler < MAX_TEXTURES);
-#ifdef OX_DEBUG
 
-        if (_textures[sampler])
+#ifdef OX_DEBUG
+        if (_textures[sampler] && _driver == IVideoDriver::instance)
         {
             GLint whichID;
             oxglActiveTexture(GL_TEXTURE0 + sampler);
@@ -75,8 +75,8 @@ namespace oxygine
 
             OX_ASSERT(_textures[sampler]->getHandle() == (nativeTextureHandle)whichID);
         }
-
 #endif
+
         if (_textures[sampler] == t)
             return;
         _textures[sampler] = t;
@@ -103,6 +103,11 @@ namespace oxygine
 
     }
 
+    void RenderStateCache::changeDriver(IVideoDriver *d)        
+    {
+        _driver = d;
+    }
+
 
     bool RenderStateCache::setShader(ShaderProgram* prog)
     {
@@ -586,7 +591,7 @@ namespace oxygine
         if (!indices)
             return;
 
-        IVideoDriver::instance->draw(IVideoDriver::PT_TRIANGLES, _vdecl,
+        _driver->draw(IVideoDriver::PT_TRIANGLES, _vdecl,
                                      &_verticesData.front(), (unsigned int)_verticesData.size(),
                                      &STDRenderer::indices16.front(), (unsigned int)indices);
 

+ 4 - 0
oxygine/src/oxygine/STDRenderer.h

@@ -9,6 +9,8 @@ namespace oxygine
     {
     public:
         RenderStateCache(IVideoDriver* d);
+        
+
 
         const spNativeTexture& getTexture(int sampler) { return _textures[sampler]; }
 
@@ -19,6 +21,8 @@ namespace oxygine
         void reset();
         void resetTextures();
 
+        void changeDriver(IVideoDriver *d);//used for DebugActor
+
     protected:
         enum { MAX_TEXTURES = 8 };
 

+ 1 - 1
oxygine/src/oxygine/core/ios/HttpRequestCocoaTask.mm

@@ -224,7 +224,7 @@ namespace oxygine
         NSValue *taskValue = [NSValue valueWithPointer:this];
         objc_setAssociatedObject(task, &taskKey, taskValue, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
         
-        log::messageln("created task session: %x", task);
+        //log::messageln("created task session: %x", task);
         
         [task resume];
     }

+ 17 - 3
oxygine/src/oxygine/dev_tools/TreeInspectorPreview.cpp

@@ -64,6 +64,12 @@ namespace oxygine
 
         VideoDriverCache& cache = _videoCache;
 
+        MaterialX::null->apply();
+        rsCache().reset();
+        rsCache().changeDriver(&cache);
+        
+        
+
 
         STDRenderer* original = STDRenderer::getCurrent();
 
@@ -91,6 +97,10 @@ namespace oxygine
         else
             item->doRender(rs);
 
+        rsCache().changeDriver(IVideoDriver::instance);
+        rsCache().reset();
+        MaterialX::null->apply();
+
 
         RectF itemRect = cache._bounds;
         if (itemRect == RectF::invalidated())
@@ -145,8 +155,12 @@ namespace oxygine
 
     void TreeInspectorPreview::doRender(RenderState const& parentRenderState)
     {
+        rsCache().reset();
+        MaterialX::null->apply();
         Sprite::doRender(parentRenderState);
+        MaterialX::null->apply();
         _videoCache.render(parentRenderState.transform);
+        rsCache().reset();
     }
 
     VideoDriverCache::VideoDriverCache()
@@ -310,16 +324,16 @@ namespace oxygine
         b.numVertices = 0;
     }
 
-    void VideoDriverCache::draw(PRIMITIVE_TYPE pt, const VertexDeclaration* decl, const void* verticesData, unsigned int numVertices, const unsigned short* indicesData, unsigned int numIndices)
+    void VideoDriverCache::draw(PRIMITIVE_TYPE pt, const VertexDeclaration* decl, const void* verticesData, unsigned int verticesDataSize, const unsigned short* indicesData, unsigned int numIndices)
     {
         if (!numIndices)
             return;
 
         current().vdecl = decl;
         current().pt = pt;
-        current().numVertices = numVertices;
+        current().numVertices = verticesDataSize / decl->size;
         current().numIndices = numIndices;
-        current().vertices.assign((const char*)verticesData, (const char*)verticesData + decl->size * numVertices);
+        current().vertices.assign((const char*)verticesData, (const char*)verticesData + verticesDataSize);
         current().indices.assign(indicesData, indicesData + numIndices);
 
         nextBatch();