Soyez le premier à donner votre avis sur cette source.
Vue 13 311 fois - Téléchargée 1 323 fois
/* Voici le code d'un programme de test du moteur */ #include <windows.h> #include "..\moteur\include\chakraengine.h" #ifdef _DEBUG #pragma comment(lib, "..\\moteur\\debug\\lib\\ChakraEngine.lib") #else #pragma comment(lib, "..\\moteur\\lib\\ChakraEngine.lib") #endif ce::ChakraEngineDevice* device; ce::Scene* scene; ce::objects::Camera* camera; ce::objects::Light* light; ce::objects::Object* object; ce::objects::Object* object2; LRESULT CALLBACK wnproc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { static PAINTSTRUCT ps; POINT* pt = new POINT; GetCursorPos(pt); switch(uMsg) { case WM_CLOSE: PostQuitMessage(0); return 0; case WM_KEYDOWN: switch(wParam) { case VK_DOWN: camera->advanceInCameraDirection(-2); break; case VK_UP: camera->advanceInCameraDirection(2); break; } return 0; case WM_LBUTTONUP: break; case WM_PAINT: device->render(scene); BeginPaint(hWnd, &ps); EndPaint(hWnd, &ps); return 0; } delete pt; return DefWindowProc(hWnd, uMsg, wParam, lParam); } int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { device = ce::createDevice(ce::CE_OPENGLVBO, wnproc, 800, 600, 32, false); device->setViewDistance(1024); scene = ce::createScene(); camera = ce::objects::createCamera(); camera->setPosition(ce::unites::vector3df(20, 45, 15)); camera->setTarget(ce::unites::vector3df(59, 120, 34)); light = ce::objects::createLight(ce::objects::CE_LIGHT_DIRECTIONAL); light->setDirection(ce::unites::vector3df(0.0f, -0.8f, 0.0f)); light->setColor(ce::unites::Color(255, 235, 235, 255)); //object = ce::objects::createObjectFromMesh(ce::objects::createTerrainMesh(ce::resources::createTextureFromJPEG("worldl.jpg"), 256, 256, 64)); object = ce::objects::createCubeMesh(2); // cette ligne sert à ce que vous pouvez compilez object->setScale(ce::unites::vector3df(2.0f, 1.0f, 2.0f)); //object->setTexture(ce::resources::createTextureFromJPEG("worldt.jpg")); object->getMaterial()->setAmbient(ce::unites::Color(128, 128, 128, 255)); object->getMaterial()->setDiffuse(ce::unites::Color(255, 255, 255, 255)); object->getMaterial()->setSpecular(ce::unites::Color(255, 255, 255, 255)); object->setPosition(ce::unites::vector3df(0, 0, 0)); //object2 = ce::objects::createObjectFromMesh(ce::objects::createMeshFromMD2("dino.md2")); object2 = ce::objects::createCubeMesh(5); // cette ligne sert à ce que vous pouvez compilez //object2->setTexture(ce::resources::createTextureFromJPEG("dino.jpg")); object2->getMaterial()->setAmbient(ce::unites::Color(128, 128, 128, 128)); object2->getMaterial()->setDiffuse(ce::unites::Color(255, 255, 255, 255)); object2->getMaterial()->setSpecular(ce::unites::Color(255, 255, 255, 255)); object2->setRotation(ce::unites::vector3df(270, 0, 0)); object2->setPosition(ce::unites::vector3df(0, 50, 0)); scene->setCurrentCamera(camera); scene->addObject(object); scene->addObject(object2); scene->addLight(light); scene->setAmbientLight(ce::unites::Color(255, 255, 255, 255)); int dinoframe = 0; while(true) { MSG msg; if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) { break; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } else { SetWindowText(device->getWindow(), String(String("Chakra Engine - Demonstration - WIP: ") + String(__DATE__) + " (" + String(__TIME__) + ") - Using " + device->getName() + " - FPS: " + String(device->getFPS())).c_str()); RECT rc; GetWindowRect(device->getWindow(), &rc); camera->adaptAsFPSCamera((rc.right - rc.left) / 2, (rc.bottom - rc.top) / 2); /*object2->getMesh()->loadFrame(dinoframe); if (++dinoframe >= object2->getMesh()->getFramesCount()) dinoframe = 0;*/ device->beginRendering(); device->render(scene); device->endRendering(); } } } catch(ce::system::Error* err) { MessageBox(NULL, err->what(), "Error", NULL); } }
En réalité un moteur 3d ne ce fini jamais... il y a toujours une continuité de developpement.
La question devrait-etre à quand un moteur 3d stable et fonctionnel?
^_^
J'ai oublié de préciser que j'ai désactivé DirectX ; pour l'activer il suffit d'enlever le "#define _NO_DIRECTX" dans chakraengine.h et de recompiler
Parce que si DirectX est activé il demande des .dll que la moitié des gens n'ont pas (c'est une connerie de microsoft parce que les mises à jours de DirectX 9.0c qui sortent tous les mois ne demandent pas les mêmes dll que la version originale, même si c'est toujours 9.0c)
A quand la fin d'un moteur 3D alors?
^_^
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.