int main(int argc, char* argv[]) { // Get device singleton instance. auto device = RenderDevice::getInstance(); device->init(); device->setQuitOnStart(true); Text text(20.0f); text.setPosition(0, 0); text.setColor(Color::White); text.setString("Hello Text"); // Create the render texture, make it 100x100 RenderTexture renderTexture; renderTexture.create(100, 100); // Start drawing on the texture renderTexture.startFrame(); // Draw the text text.draw(); // End drawing to the texture renderTexture.endFrame(); // Save the render texture to a file renderTexture.save("out.png"); // Main loop while(device->isRunning()) { device->setTargetScreen(Screen::Top); device->clear(Color::Black); device->startFrame(); // Draw the text text.draw(); device->endFrame(); device->setTargetScreen(Screen::Bottom); device->clear(Color::Black); device->startFrame(); device->endFrame(); device->swapBuffers(); } // DON'T FORGET TO CALL THIS OR THE 3DS WILL CRASH AT EXIT device->destroy(); return 0; }
int main(int argc, char* argv[]) { // Get device singleton instance. auto device = RenderDevice::getInstance(); device->init(); device->setQuitOnStart(true); // Create a rectangle shape RectangleShape rect(100, 60, 100, 100); // And we set it's color to blue rect.setColor(Color::Blue); rect.setOutlineColor(Color::Red); rect.setOutlineThickness(2); // Create a line LineShape line(0, 0, BOTTOM_SCREEN_WIDTH, BOTTOM_SCREEN_HEIGHT); // And set its color to yellow line.setColor(Color::Yellow); // Main loop while(device->isRunning()) { device->setTargetScreen(Screen::Top); device->clear(Color::Black); device->startFrame(); // Draw the rectangle to top screen rect.draw(); device->endFrame(); device->setTargetScreen(Screen::Bottom); device->clear(Color::Black); device->startFrame(); // Draw a diagonal line on bottom screen line.draw(); device->endFrame(); device->swapBuffers(); } // DON'T FORGET TO CALL THIS OR THE 3DS WILL CRASH AT EXIT device->destroy(); return 0; }
int main(int argc, char* argv[]) { auto device = RenderDevice::getInstance(); device->init(); device->setQuitOnStart(true); Text text(30.0f); text.setString("Random color"); // Create a thread that changes the text color every second Thread thread([&](void*) { while(device->isRunning()) { text.setColor(Color::Random()); Thread::sleep(Time::seconds(1)); } }); // Start the thread thread.start(); while(device->isRunning()) { device->setTargetScreen(Screen::Top); device->clear(Color::Black); device->startFrame(); text.draw(); device->endFrame(); device->setTargetScreen(Screen::Bottom); device->clear(Color::Black); device->startFrame(); device->endFrame(); device->swapBuffers(); } // Wait the thread end thread.join(); // DON'T FORGET TO CALL THIS OR THE 3DS WILL CRASH AT EXIT device->destroy(); return 0; }
OculusView::OculusView(const std::string& name) : OsgView(name) { SURGSIM_ADD_SERIALIZABLE_PROPERTY(OculusView, std::shared_ptr<SurgSim::Framework::Component>, InputComponent, getInputComponent, setInputComponent); // Default Settings of Oculus DK2 setFullScreen(true); setDisplayType(View::DISPLAY_TYPE_HMD); setStereoMode(View::STEREO_MODE_HORIZONTAL_SPLIT); setScreenWidth(0.0631); setScreenHeight(0.071); setEyeSeparation(0.06); setScreenDistance(0.10); setTargetScreen(1); // Assume Oculus HMD has ID '1'. std::array<int, 2> dimensions = {1920, 1080}; setDimensions(dimensions); }
int main(int argc, char* argv[]) { // Get device singleton instance. auto device = RenderDevice::getInstance(); // We use a class called InputManager for checking input. // It's a singleton so we need to get the instance. auto input = InputManager::getInstance(); device->init(); Text text(20.0f); text.setPosition(100, 100); text.setColor(Color::White); // Main loop while(device->isRunning()) { std::string key; if(input->isKeyDown(Keys::A)) { key = "A"; } else if(input->isKeyDown(Keys::B)) { key = "B"; } else if(input->isKeyDown(Keys::X)) { key = "X"; } else if(input->isKeyDown(Keys::Y)) { key = "Y"; } else if(input->isKeyDown(Keys::L)) { key = "L"; } else if(input->isKeyDown(Keys::R)) { key = "R"; } else if(input->isKeyDown(Keys::Select)) { key = "Select"; } else // ... You should check other buttons too { key = "Nothing"; } // Quit if the start button is pressed if(input->isKeyDown(Keys::Start)) { device->quit(); } text.setString(key + " pressed."); device->setTargetScreen(Screen::Top); device->clear(Color::Black); device->startFrame(); text.draw(); device->endFrame(); device->setTargetScreen(Screen::Bottom); device->clear(Color::Black); device->startFrame(); device->endFrame(); device->swapBuffers(); } // DON'T FORGET TO CALL THIS OR THE 3DS WILL CRASH AT EXIT device->destroy(); return 0; }
int main(int argc, char* argv[]) { // Get device singleton instance. auto device = RenderDevice::getInstance(); auto input = InputManager::getInstance(); device->init(); Text text(20.0f); text.setPosition(0, 30); text.setColor(Color::White); text.setLineWidth(BOTTOM_SCREEN_WIDTH); std::string str = "Press A to take a screenshot of top screen.\n\n" "Press B to take a screenshot of bottom screen.\n"; text.setString(str); // Setup a basic scene CircleShape circle(60); circle.setPosition(100, 50); circle.setColor(Color::Yellow); circle.setSegments(20); TriangleShape triangle(Vec2(110, 60), Vec2(140, 10), Vec2(180, 60)); triangle.setColor(Color::Red); // Main loop while(device->isRunning()) { if(input->isKeyDown(Keys::A)) { device->takeScreenshot("top.png", ImageFormat::Png, Screen::Top); } else if(input->isKeyDown(Keys::B)) { device->takeScreenshot("bot.png", ImageFormat::Png, Screen::Bottom); } if(input->isKeyDown(Keys::Start)) { device->quit(); } triangle.setScale((float)std::sin(device->getTicks())); circle.setAngle(circle.getAngle() + 20.0f * device->getDeltaTime()); device->setTargetScreen(Screen::Top); device->clear(Color::Cyan); device->startFrame(); circle.draw(); triangle.draw(); device->endFrame(); device->setTargetScreen(Screen::Bottom); device->clear(Color::Black); device->startFrame(); text.draw(); device->endFrame(); device->swapBuffers(); } // DON'T FORGET TO CALL THIS OR THE 3DS WILL CRASH AT EXIT device->destroy(); return 0; }