diff --git a/examples/image_display_demo/main.cpp b/examples/image_display_demo/main.cpp index 9438d54..2081a3f 100644 --- a/examples/image_display_demo/main.cpp +++ b/examples/image_display_demo/main.cpp @@ -40,7 +40,7 @@ private: cameraNode->setName("MainCamera"); cameraNode->setPosition(0.0f, 0.0f); auto camera = makePtr(); - camera->setOrtho(0.0f, 1280.0f, 720.0f, 0.0f, -1.0f, 1.0f); + camera->setOrtho(1280.0f, 720.0f); cameraNode->addComponent(camera); setMainCamera(camera); addChild(cameraNode); @@ -72,21 +72,12 @@ int main(int argc, char **argv) { return -1; } - SceneModule *sceneModule = app->getModule(); - if (!sceneModule) { - printf("获取场景模块失败!\n"); - return -1; - } - - Director *director = sceneModule->getDirector(); + auto director = app->getModule()->getDirector(); if (!director) { printf("获取导演器失败!\n"); return -1; } - - auto scene = makePtr(); - director->runScene(scene); - + director->runScene(makePtr()); app->run(); return 0; } diff --git a/examples/scene_graph_demo/README.md b/examples/scene_graph_demo/README.md index f2af0e4..cfefa55 100644 --- a/examples/scene_graph_demo/README.md +++ b/examples/scene_graph_demo/README.md @@ -90,7 +90,7 @@ node->addComponent(sprite); ### 设置相机 ```cpp auto camera = makePtr(); -camera->setOrtho(0, 1280, 0, 720, -1, 1); +camera->setOrtho(1280, 720); cameraNode->addComponent(camera); scene->setMainCamera(camera); ``` diff --git a/examples/scene_graph_demo/game_scene.cpp b/examples/scene_graph_demo/game_scene.cpp index 61419ac..42b55ef 100644 --- a/examples/scene_graph_demo/game_scene.cpp +++ b/examples/scene_graph_demo/game_scene.cpp @@ -157,7 +157,7 @@ void GameScene::createCamera() { auto camera = makePtr(); // 使用标准的2D投影:左上角为(0, 0),右下角为(1280, 720) // Y轴向下:bottom=720, top=0 - camera->setOrtho(0.0f, 1280.0f, 720.0f, 0.0f, -1.0f, 1.0f); + camera->setOrtho(1280.0f, 720.0f); cameraNode->addComponent(camera); // 设置为主相机 diff --git a/include/scene/components/camera_component.h b/include/scene/components/camera_component.h index d38f1fd..b8b8032 100644 --- a/include/scene/components/camera_component.h +++ b/include/scene/components/camera_component.h @@ -51,6 +51,15 @@ public: */ ProjectionType getProjectionType() const { return projType_; } + /** + * @brief 设置正交投影 + * @param width 逻辑宽度 + * @param height 逻辑高度 + * @param near 近裁剪面 + * @param far 远裁剪面 + */ + void setOrtho(float width, float height, float near = -1.0f, float far = 1.0f); + /** * @brief 设置正交投影 * @param left 左边界 diff --git a/src/scene/components/camera_component.cpp b/src/scene/components/camera_component.cpp index 65c4db5..7721304 100644 --- a/src/scene/components/camera_component.cpp +++ b/src/scene/components/camera_component.cpp @@ -13,7 +13,11 @@ namespace extra2d { * * 创建一个默认的正交相机,视口范围为 (0, 0) 到 (800, 600) */ -CameraComponent::CameraComponent() { setOrtho(0, 800, 600, 0, -1, 1); } +CameraComponent::CameraComponent() { setOrtho(800.0f, 600.0f); } + +void CameraComponent::setOrtho(float width, float height, float near, float far) { + setOrtho(0.0f, width, height, 0.0f, near, far); +} /** * @brief 设置投影类型