الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة مع Ogre

بدأه aziz nor في 8 يوليو 2009 · 1 رد · 849 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

بدات منذ مدة الاحتكاك مع المحرك

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;
  }

وهذه صورة مرفقة للحطا

ogreproblem.rar

ملاحظة

الكود في الاعلي هو نتاج لدروس ماخوذة من موقع

developpez.com

تم تعديل هذه المشاركة بواسطة aziz nor في 8 يوليو 2009 في 19:26

اللهم صلي علي المصطفي محمد

صلي الله عليه وسلم

#2

وعليكم السلام ,

ملاحظة جانبية : كان من الافضل اضافة الصورة مباشرة بتنسيق JPG أو PNG مثلا , , أسرع ...

الرسالة تقول أنك لم تحدد نوع Renderer , هناك عدة أنواع منها ( OpenGL - Direct3D9 ) , يبدو أنه يجب عليك تحديد النوع ,

لم استخدم Ogre سابقاً , لكن هذا مافهمته من رسالة الخطأ .

قد تحتاج لهذه الدالة : setRenderSystem

http://www.ogre3d.org/docs/api/html/classO...42bf83157daf570

انظر لشرح الدالة initialize

http://www.ogre3d.org/docs/api/html/classO...b0987c8b3e128b5

قد تحتاج لكتابة شيء شبيه بالتالي :

void Application::Start()
  {
	  pRoot = new Ogre ::Root();
	  RenderSystem * rs = createRenderSystem("OpenGL");
	  pRoot-> setRenderSystem ( rs);

	   pRenderWindow = pRoot->initialise(true,"Ma premiere application Ogre");
	   pSceneManager = pRoot->createSceneManager(Ogre::ST_GENERIC, "MonGestionnaireDeScene");
	   pCamera = pSceneManager->createCamera("MaCamera");
	   pViewport = pRenderWindow->addViewport(pCamera);

  }

طبعاً الدالة createRenderSystem مجرد توضيح ... ابحث عن دالة تقوم بنفس الغرض ,,, عموماً Ogre تستخدم Dialog Box لاختيار نوع Render System ... أو انتظر احد الزملاء ,,, سيساعدك .

تم تعديل هذه المشاركة بواسطة الشمري في 8 يوليو 2009 في 20:01

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

مواضيع مشابهة