Буду в этой теме выкладывать новости своего проекта!
Поехали:
-C++/DirectX 9/Direct Input 8(привык проста уже)
Щас проект на начальной стадии,вырисовываю архитектуру,так что пока особых фич нету.
Движок похож на Ogre3D,но это не сдерание движка,это просто наследование его концепций!
Имеем:
- DX Input.
- tga,bmp,jpg,hdr (вобщем все что держит D3DXCreateTextureFromFile)
- .X файлы,вместе с текстурами.
- Камера FPS стиля.
Двиг компилится в статическую .lib и все желающие смогут её получить,но пока там особо нечего смотреть.
Вот код показывающий создание и управление камерой,загрузка X файла.
CSample01.h
Код:
#pragma once
#include "../../unnamed/unnamed/UnnamedAPI.h"
#pragma comment(lib,"../../unnamed/debug/Unnamed.lib")
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;
//***************scene nodes*****************//
scene::ISceneNode* m_sceneNode;
//***************scene objects***************//
scene::ICamera* m_camera;
scene::IEntity* m_entity;
class CSampleFrameListener:public video::IFrameListener
{
public:
CSampleFrameListener(void){up =0;};
public:
~CSampleFrameListener(void){};
public:
void frameStarted()
{
f32 forward = 0;
f32 sideward = 0;
m_input->poll();
if(m_input->keyDown(UK_W)) forward = 0.1f;
if(m_input->keyDown(UK_S)) forward = -0.1f;
if(m_input->keyDown(UK_A)) sideward = -0.1f;
if(m_input->keyDown(UK_D)) sideward = 0.1f;
if(m_input->mouseDown(UM_KEYLEFT)) up = up+ 0.1f;
if(m_input->mouseDown(UM_KEYRIGHT)) up = up- 0.1f;
m_camera->fPitch-=(double)m_input->getMouseState().lY * 0.01f;
m_camera->fYaw -= (double)m_input->getMouseState().lX * 0.01f;
m_camera->moveCamera(forward,sideward);
m_camera->setPosition(core::CVec3(m_camera->getPositionX(),up,m_camera->getPositionZ()));
m_entity->render();
}
void frameEnded()
{
}
private:
f32 up;
};
CSample01.cpp
Код:
#include "CSample01.h"
video::IFrameListener* frameListener = new CSampleFrameListener();
void init()
{
m_window = m_root->createCore("Unnamed",800,600);
m_device = m_root->createRenderDevice();
m_device->addFrameListener(frameListener);
m_sceneMgr = m_root->createSceneManager();
m_input = m_window->createInput();
m_camera = m_sceneMgr->createCamera();
m_camera->setPosition(core::CVec3(0.0f,6.0f,0.0f));
m_sceneNode = m_sceneMgr->getRootSceneNode()->createChildSceneNode();
m_sceneNode->setScaling(core::CVec3(10.0f,10.0f,10.0f));
m_entity = m_sceneMgr->createEntity("../../data/models/Dwarf.x");
m_entity->loadMaterials("../../data/models/");
m_entity->attachToSceneNode(m_sceneNode);
}
void cleanup()
{
m_entity->cleanUp();
m_device->cleanup();
}
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
init();
m_input->createInputDevice(hInstance);
m_device->startRendering();
cleanup();
};
Пока всё.