السلام عليكم
بدات منذ مدة الاحتكاك مع المحرك
ogre
وكنت اتابع دروس وهو بسيط والحمد لله
لكن الدروس التي كنت اعمل عليها تستعمل كلاسات مساعدة
مثل الموجود في الملف الراسي
#include "ExampleApplication.h"
و اغلب دروس المكتبة المقدمة من موقع المحرك تعتمد علي هذا الملف الراسي
طبعا هو للمبتدئين مع هذا المحرك والحمد لله كانت فكرة جيدة من اصحاب الموقع
لانه يقدم تسهيلات لتقريب المفاهيم .
لكن بعد مدة فكرة في بناء ملف راسي خاص بي يحتوي علي كلاسات من نفس طبيعة الكلاسات الموجودة في
#include "ExampleApplication.h"
لكن بسيط جدا جدا وقد قمن بتظمينه في ملف المشروع مبدئيا
علي ان اقوم بكتابته في ملف مستقل
المهم بعد هذه المقدمة المملة
مشي الامر طبيعي وتم ترجمة الملف لكن عند تشغيل
الملف يظهر لي خطا لم افهم فيه ولاشيء وهو مدار سؤالي
الكود الذي كتبته هو كتالي
#include <Ogre.h>
class Application
{
public :
Application();
~Application();
void Start();
void Run();
void Exit();
public :
Ogre::Root* pRoot;
Ogre::SceneManager* pSceneManager;
Ogre::RenderWindow* pRenderWindow;
Ogre::Viewport* pViewport;
Ogre::Camera* pCamera;
};
Application::Application()
{
pRoot = 0;
pSceneManager = 0;
pRenderWindow = 0;
pViewport = 0;
pCamera = 0;
};
Application::~Application()
{
Exit();
}
void Application::Run()
{
pRoot->startRendering();
}
void Application::Start()
{
pRoot = new Ogre ::Root();
pRenderWindow = pRoot->initialise(true,"Ma premiere application Ogre");
pSceneManager = pRoot->createSceneManager(Ogre::ST_GENERIC, "MonGestionnaireDeScene");
pCamera = pSceneManager->createCamera("MaCamera");
pViewport = pRenderWindow->addViewport(pCamera);
}
void Application::Exit()
{
if (pRoot!=0) delete pRoot;
}
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc, char **argv)
#endif
{
try {
Application MonApplication;
MonApplication.Start ();
MonApplication.Run();
MonApplication.Exit();
} catch( Ogre::Exception &e ) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBox( NULL, e.what(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
fprintf(stderr, "An exception has occurred: %s\n",
e.what());
#endif
}
return 0;
}وهذه صورة مرفقة للحطا
ملاحظة
الكود في الاعلي هو نتاج لدروس ماخوذة من موقع
