2
0
Эх сурвалжийг харах

- cleanup render2texture example
- fixed minor TextField bug

dmuratshin 10 жил өмнө
parent
commit
e8da34ca5d

+ 19 - 10
examples/Demo/src/TestRender2Texture.h

@@ -1,7 +1,8 @@
 #pragma once
 #include "test.h"
+#include "STDMaterial.h"
 
-class TestRender2Texture: public Test
+class TestRender2Texture : public Test
 {
 public:
     spNativeTexture texture;
@@ -38,7 +39,7 @@ public:
 
     void onDown(Event* ev)
     {
-        color = Color(rand() % 255, rand() % 255, rand() % 255, 32);
+        color = Color(rand() % 255, rand() % 255, rand() % 255, 128);
         onMove(ev);
     }
 
@@ -48,28 +49,36 @@ public:
         if (!te->getPointer()->isPressed())
             return;
 
-        STDRenderer renderer(0);
+        STDRenderer& renderer = *STDRenderer::instance;
+        IVideoDriver* driver = IVideoDriver::instance;
+
 
         Rect viewport(Point(0, 0), content->getSize().cast<Point>());
         renderer.initCoordinateSystem(viewport.getWidth(), viewport.getHeight(), true);
 
-        IVideoDriver* driver = IVideoDriver::instance;
-
         driver->setRenderTarget(texture);
         driver->setViewport(viewport);
 
-        RectF destRect(te->localPosition - Vector2(16, 16), Vector2(32, 32));
-
-        //begin rendering
+#if 1
         renderer.begin(0);
+        RectF destRect(te->localPosition - Vector2(16, 16), Vector2(32, 32));
 
         ResAnim* brush = resources.getResAnim("brush");
         AnimationFrame frame = brush->getFrame(0);
         const Diffuse& df = frame.getDiffuse();
-        renderer.setTexture(df.base, 0);
-        renderer.setBlendMode(blend_alpha);
+        renderer.setTexture(df.base, 0, true);
+        renderer.setBlendMode(blend_premultiplied_alpha);
         renderer.draw(color, frame.getSrcRect(), destRect);
         renderer.end();
+#else
+        //how to render actors to texture
+        RenderState rs;
+        rs.material = STDMaterial::instance;
+        Test::instance->setVisible(true);
+        Test::instance->Actor::render(rs);
+        Test::instance->setVisible(false);
+
+#endif
 
         //restore to default render target
         driver->setRenderTarget(0);

+ 1 - 0
oxygine/src/STDRenderer.cpp

@@ -269,6 +269,7 @@ namespace oxygine
 
         _program = 0;
         _vertices.clear();
+        _transform.identity();
         resetSettings();
 
         _begin();

+ 1 - 0
oxygine/src/TextField.cpp

@@ -94,6 +94,7 @@ namespace oxygine
     void TextField::setFont(const Font* font)
     {
         _style.font = font;
+        needRebuild();
     }
 
     void TextField::setHAlign(TextStyle::HorizontalAlign align)