PMG

Форумы по созданию игр
Текущее время: 29 ноя 2021 19:20

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Код инициализации движка.
СообщениеДобавлено: 29 июн 2007 11:22 
Вот решил выложить код инициализации движка:
Код:
#include "win.h"
#include "video.h"

#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEY_UP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
///////////////////////////////////////////////////////////////////////////

int main()
{
WinMain(0,0,0,0);
return 0;
}
///////////////////////////////////////////////////////////////////////////

int Init_Game()
{
Init_Video(800,600);
return 0;
}
///////////////////////////////////////////////////////////////////////////

int Game_Main()
{
Begin_Draw();
End_Draw();

if(KEY_DOWN(VK_ESCAPE))
{
PostMessage(hwnd,WM_DESTROY,0,0);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////

int Shutdown_Game()
{
Shutdown_Video();
return 0;
}
///////////////////////////////////////////////////////////////////////////

Все желающие могут обсудить и высказать свое мнение. =)


Последний раз редактировалось Tiger 29 июн 2007 13:22, всего редактировалось 1 раз.

Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 июн 2007 12:11 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
Если писать на С++,так уже писать на С++,а ты пишеш на С,тоесть процедурами!
Цитата:
#include "win.h"
#include "video.h"

жесть... лучшеб выглядело если б так: #include "TigerEngineAPI.h" - в котором прописаны все инклуды!
Это всё моё ИМХО.

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 июн 2007 13:01 
Цитата:
Если писать на С++,так уже писать на С++,а ты пишеш на С,тоесть процедурами!

Я не говорил, что буду писать на C++. Это чистый си. =)
Цитата:
жесть... лучшеб выглядело если б так: #include "TigerEngineAPI.h" - в котором прописаны все инклуды!
Это всё моё ИМХО.

Я старался написать как можна проше и короче. =)


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 июн 2007 17:22 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
А где чтение конфигурации?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 июн 2007 17:48 
Цитата:
А где чтение конфигурации?

Какой конфигурации и зачем?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 июл 2007 13:00 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Какой видеорежим включить, какие у проги настройки ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02 июл 2007 18:42 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
Не понту ради,а ради искувства! 8)
CSample01.h
Код:
#pragma once
#pragma comment(lib,"../../unnamed/debug/Unnamed.lib")
#include "../../unnamed/unnamed/UnnamedAPI.h"
using namespace unnamed;
root::CRoot* m_root = new root::CRoot(); //main engine object
core::CCore* m_window;
video::IRenderDevice* m_device;
scene::CSceneManager* m_sceneMgr;
core::CInput* m_input;

class CSample01
{
public:
   CSample01(void);
public:
   ~CSample01(void);
};

CSample01.cpp
Код:
#include "CSample01.h"

CSample01::CSample01(void)
{
}

CSample01::~CSample01(void)
{
}
void init()
{
     m_window = m_root->createCore("Unnamed",800,600);
    m_device = m_root->createRenderDevice();
    m_sceneMgr = m_root->createSceneManager();
    m_input = m_window->createInput();
}
void draw()
{
   m_input->poll();
   if(m_input->keyDown(UK_W)) exit(1);
   m_device->beginFrame();

   m_device->endFrame();
}
void cleanup()
{
   m_device->cleanup();
}
int WINAPI WinMain( HINSTANCE hInstance,
               HINSTANCE hPrevInstance,
               LPSTR lpCmdLine,
               int nCmdShow )
{
   MSG        uMsg;
    memset(&uMsg,0,sizeof(uMsg));

    init();
    m_input->createInputDevice(hInstance);
   while( uMsg.message != WM_QUIT )
   {
      if( PeekMessage( &uMsg, NULL, 0, 0, PM_REMOVE ) )
      {
         TranslateMessage( &uMsg );
         DispatchMessage( &uMsg );
      }
        else
   draw();
      
   }
   cleanup();
};

by Assassin

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июл 2007 08:43 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
А если у тебя несколько окон в приложении и еще в каждом окне по несколько графических контекстов, причем в перемешку:OGL,DX,GDI ... Как тут быть?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июл 2007 11:27 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
MagicWolf, Всё предусмотренно!
Класс CRoot
Код:
#pragma once
#include "../../video/renderdevice/inc/CRenderDevice.h"
#include "../../core/inc/CCore.h"
#include "../../scene/inc/CSceneManager.h"
namespace unnamed
{
   namespace root
   {
class CRoot
{
public:
   CRoot(void);
public:
   ~CRoot(void);
public:
   core::CCore* createCore(LPCSTR name,int16 width,int16 height);
   video::IRenderDevice* createRenderDevice();
   scene::CSceneManager* createSceneManager();
private:
   scene::CSceneManager* m_SceneMgr;
   video::IRenderDevice* m_RenderDevice;
   core::CCore* m_Core;
};
   };
};

Код:
#include "../inc/CRoot.h"
namespace unnamed
{
   namespace root
   {
CRoot::CRoot(void)
{
}

CRoot::~CRoot(void)
{
}
core::CCore* CRoot::createCore(LPCSTR name,int16 width,int16 height)
{
   m_Core = new core::CCore();
   m_Core->createWindow(name,width,height);
   return m_Core;
}      
video::IRenderDevice* CRoot::createRenderDevice()
{
   m_RenderDevice = new video::CRenderDevice();
   m_RenderDevice->createDevice(m_Core);
   return m_RenderDevice;
}
scene::CSceneManager* CRoot::createSceneManager()
{
   m_SceneMgr = new scene::CSceneManager();
   m_SceneMgr->setRenderDevice(m_RenderDevice->getDevice());
   return m_SceneMgr;
}
   };
};

Тоесть если девайс создавать через CRoot то тогда он автоматически связывается с созданным в CRoot окне,если нам нужно два и больше окна/девайса,есть два варианта:
1 - Создать ещё один CRoot
2 - Установит связь(Device<-->Window) в ручную.
Код:
m_Core->createWindow(name,width,height);
m_RenderDevice->createDevice(m_Core);

ВсЁ

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июл 2007 11:49 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
А обработка сообщений от win?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июл 2007 13:34 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
Как то щас неочень мне это нужно!

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июл 2007 15:31 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Core - это все же у тебе Window, RenderDevice - это ближе в Render3D, т.е. выбор типа либы для работы с 3D, SceneManager - это понятно. Но зачем тогда Root?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июл 2007 15:38 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 29 апр 2006 21:28
Сообщения: 404
MagicWolf,Связывает всё это между собой!

_________________
С уважением,Блинов Андрей.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB