PMG https://forum.pmg.org.ru/ |
|
Код инициализации движка. https://forum.pmg.org.ru/viewtopic.php?f=19&t=3339 |
Страница 1 из 1 |
Автор: | Tiger [ 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; } /////////////////////////////////////////////////////////////////////////// Все желающие могут обсудить и высказать свое мнение. ![]() |
Автор: | Assassin [ 29 июн 2007 12:11 ] |
Заголовок сообщения: | |
Если писать на С++,так уже писать на С++,а ты пишеш на С,тоесть процедурами! Цитата: #include "win.h"
#include "video.h" жесть... лучшеб выглядело если б так: #include "TigerEngineAPI.h" - в котором прописаны все инклуды! Это всё моё ИМХО. |
Автор: | Tiger [ 29 июн 2007 13:01 ] |
Заголовок сообщения: | |
Цитата: Если писать на С++,так уже писать на С++,а ты пишеш на С,тоесть процедурами! Я не говорил, что буду писать на C++. Это чистый си. ![]() Цитата: жесть... лучшеб выглядело если б так: #include "TigerEngineAPI.h" - в котором прописаны все инклуды!
Это всё моё ИМХО. Я старался написать как можна проше и короче. ![]() |
Автор: | MagicWolf [ 29 июн 2007 17:22 ] |
Заголовок сообщения: | |
А где чтение конфигурации? |
Автор: | Tiger [ 29 июн 2007 17:48 ] |
Заголовок сообщения: | |
Цитата: А где чтение конфигурации?
Какой конфигурации и зачем? |
Автор: | MagicWolf [ 02 июл 2007 13:00 ] |
Заголовок сообщения: | |
Какой видеорежим включить, какие у проги настройки ... |
Автор: | Assassin [ 02 июл 2007 18:42 ] |
Заголовок сообщения: | |
Не понту ради,а ради искувства! ![]() 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 |
Автор: | MagicWolf [ 03 июл 2007 08:43 ] |
Заголовок сообщения: | |
А если у тебя несколько окон в приложении и еще в каждом окне по несколько графических контекстов, причем в перемешку:OGL,DX,GDI ... Как тут быть? |
Автор: | Assassin [ 03 июл 2007 11:27 ] |
Заголовок сообщения: | |
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); ВсЁ |
Автор: | MagicWolf [ 03 июл 2007 11:49 ] |
Заголовок сообщения: | |
А обработка сообщений от win? |
Автор: | Assassin [ 03 июл 2007 13:34 ] |
Заголовок сообщения: | |
Как то щас неочень мне это нужно! |
Автор: | MagicWolf [ 03 июл 2007 15:31 ] |
Заголовок сообщения: | |
Core - это все же у тебе Window, RenderDevice - это ближе в Render3D, т.е. выбор типа либы для работы с 3D, SceneManager - это понятно. Но зачем тогда Root? |
Автор: | Assassin [ 03 июл 2007 15:38 ] |
Заголовок сообщения: | |
MagicWolf,Связывает всё это между собой! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |