anonymous No title
No License C++
2020年06月25日
Copy Clone
# include <Siv3D.hpp>

// シーンの名前
enum class State
{
    MainCtrl,
    PoseCtrl,
    Break
};

// シーン管理クラス
using MyApp = SceneManager<State, Data>;

// メインシーン
class MainCtrl : public MyApp::Scene{
private:
    Webcam webcam[2] = { Webcam(0),Webcam(1) };//Webcam宣言
    WebcamInfo webcamInfo;
    Image image;
    DynamicTexture texture;

    int useCam = 0;//Webcam変更用変数

public:
    MainCtrl(const InitData& init)
        : IScene(init) {
         webcam[0].setResolution(Size(640, 480));
         if (!webcam[0].start())
         {
             throw Error(U"Webcam 0 not available.");
         }
         webcam[1].setResolution(Size(640, 480));
         if (!webcam[1].start())
         {
             throw Error(U"Webcam 1 not available.");
         }
        const Size resolution = webcam[1].getResolution();
        Window::Resize(resolution);
    }

    void update() override
    {
        if (webcam[useCam].hasNewFrame())
        {
            webcam[useCam].getFrame(image);

            texture.fillIfNotBusy(image);
        }
    }

    void draw() const override
    {
        if (texture)
        {
            texture.draw();
        }
        for (const auto& info : System::EnumerateWebcams())
        {
            Print << U"[{}] {} `{}`"_fmt(info.index, info.name, info.uniqueName);
        }
    }
};


void Main()
{
    // 背景色を設定
    Scene::SetBackground(ColorF(0, 0, 0));

    // シーンと遷移時の色を設定
    MyApp manager;
    manager
        .add<MainCtrl>(State::MainCtrl)
        .setFadeColor(ColorF(1.0));

    while (System::Update())
    {
        if (!manager.update())
        {
            break;
        }
    }
}
# include <Siv3D.hpp>

// シーンの名前
enum class State
{
    MainCtrl,
    PoseCtrl,
    Break
};

// シーン管理クラス
using MyApp = SceneManager<State, Data>;

// メインシーン
class MainCtrl : public MyApp::Scene{
private:
    Webcam webcam[2] = { Webcam(0),Webcam(1) };//Webcam宣言
    WebcamInfo webcamInfo;
    Image image;
    DynamicTexture texture;

    int useCam = 0;//Webcam変更用変数

public:
    MainCtrl(const InitData& init)
        : IScene(init) {
         webcam[0].setResolution(Size(640, 480));
         if (!webcam[0].start())
         {
             throw Error(U"Webcam 0 not available.");
         }
         webcam[1].setResolution(Size(640, 480));
         if (!webcam[1].start())
         {
             throw Error(U"Webcam 1 not available.");
         }
        const Size resolution = webcam[1].getResolution();
        Window::Resize(resolution);
    }

    void update() override
    {
        if (webcam[useCam].hasNewFrame())
        {
            webcam[useCam].getFrame(image);

            texture.fillIfNotBusy(image);
        }
    }

    void draw() const override
    {
        if (texture)
        {
            texture.draw();
        }
        for (const auto& info : System::EnumerateWebcams())
        {
            Print << U"[{}] {} `{}`"_fmt(info.index, info.name, info.uniqueName);
        }
    }
};


void Main()
{
    // 背景色を設定
    Scene::SetBackground(ColorF(0, 0, 0));

    // シーンと遷移時の色を設定
    MyApp manager;
    manager
        .add<MainCtrl>(State::MainCtrl)
        .setFadeColor(ColorF(1.0));

    while (System::Update())
    {
        if (!manager.update())
        {
            break;
        }
    }
}
No one still commented. Please first comment.