Foros - Stratos

Programadores => Código de la Semana => Mensaje iniciado por: ethernet en 07 de Febrero de 2003, 10:18:25 PM

Título: Video driver - mICrO
Publicado por: ethernet en 07 de Febrero de 2003, 10:18:25 PM


//////////////////////////////////////////////////////////////////////

// Video.h: interface for Video DLLs

// Common Use

//////////////////////////////////////////////////////////////////////



#if !defined(TVideoDriver__INCLUDED_)

#define TVideoDriver__INCLUDED_



// this is actually our interface, i added only a few functions

struct TVideoDriver

{

// get driver name

virtual void getName(char* strOut);



// init the driver

virtual BOOL initialize(HWND window);



// finish the driver

virtual BOOL finalize();



// setup the driver

virtual BOOL setup();



// begin a frame

virtual BOOL beginFrame();



// end a frame

virtual BOOL endFrame();



// open the driver for rendering

virtual BOOL openVideo(HWND renderWindow);



// close the driver for rendering

virtual BOOL closeVideo();

};



// the only function that a driver must export

typedef TVideoDriver*(*ptrFuncGetVideoDriver)();



#endif // !defined(TVideoDriver__INCLUDED_)



//////////////////////////////////////////////////////////////////////

// main.cpp: dll main

// This in CustomDriver.Dll

//////////////////////////////////////////////////////////////////////



// just the driver object

CCustomVideoDriver driver;



// return a cast to the interface

extern "C" __declspec(dllexport) TVideoDriver* getVideoDriver()

{

return (TYakVideoDriver*) &

}





//////////////////////////////////////////////////////////////////////

// CustomVideoDriver.h: Declaration of our driver

// This in CustomDriver.Dll

//////////////////////////////////////////////////////////////////////

class CCustomVideoDriver : public TYakVideoDriver

{

public:



// driver interfaces



void getName(char* strOut);



BOOL initialize(HWND window);  

BOOL finalize();



BOOL setup();





BOOL beginFrame();

BOOL endFrame();



BOOL openVideo(HWND renderWindow);

BOOL closeVideo();



// custom data, just a posible example

private:



D3D9TextureManager* pManager;

}





//////////////////////////////////////////////////////////////////////

// CustomVideoDriver.cpp: Code of our driver (just example)

// This in CustomDriver.Dll

//////////////////////////////////////////////////////////////////////

BOOL CCustomVideoDriver::initialize(HWND window)

{

return initD3D9(); // and so on

}







//////////////////////////////////////////////////////////////////////

// DriverManager.h: Manage the drivers

// This in our game.exe

//////////////////////////////////////////////////////////////////////

class CVideoManager

{

public :



BOOL loadDriver(char* fileName);

BOOL unloaDriver();

inline TYakVideoDriver* getDriver(){return driver;}

private :



HMODULE libraryHandle;

TYakVideoDriver* driver;

}



//////////////////////////////////////////////////////////////////////

// DriverManager.cpp: Manage the drivers

// This in our game.exe

//////////////////////////////////////////////////////////////////////

BOOL CVideoManager::loadDriver(char* fileName)

{

BOOL result = TRUE;



libraryHandle = LoadLibrary(fileName);



if (libraryHandle != NULL)

{

 ptrFuncGetVideoDriver funcGetDriver =(ptrFuncGetVideoDriver)

  GetProcAddress(libraryHandle, "getVideoDriver");

 

 if (funcGetDriver != NULL)

  driver = funcGetDriver();

 else

  result = FALSE;

}

else

{

 result = FALSE

 driver = NULL;

}



return result;

}





//////////////////////////////////////////////////////////////////////

// game.cpp: Some code to see how we could use it

// This in our game.exe

//////////////////////////////////////////////////////////////////////



void game()

{

videoManager.getDriver()->OpenVideo(mainWindow);

}







Título: Video driver - mICrO
Publicado por: ethernet en 07 de Febrero de 2003, 10:23:45 PM
He añadido algunos comentarios, micro no ha puesto demasiados y aunque a los q lleven un tiempo programando les sonara esta forma de cargar la implementacion de una libreria en tiempo de ejecucion, a otros les puede sonar a chino y mas si no estan  muy familiarizados con c++.
Hay tutoriales de como usar este sistema en flicpode y como no, en google.com :D

Esta semana ha sido la primera q he podido elegir cotw mucha gracias a los q han enviado codigos, todos de muy buena calidad.

saludos
Título: Video driver - mICrO
Publicado por: Zaelsius en 08 de Febrero de 2003, 01:49:39 PM
                                Hay algo parecido en FlipCode: http://www.flipcode.com/cgi-bin/msg.cgi?sh...orum=cotd&id=-1, aunque está enfocado a DirectX.                                
Título: Video driver - mICrO
Publicado por: ethernet en 08 de Febrero de 2003, 05:15:31 PM
ZaelSiuS:
No se refiere a eso exactamente, mas bien lo mas parecido es este codigo mega-ofsucado :
http://www.flipcode.com/cgi-bin/msg.cgi?sh...orum=cotd&id=-1
Título: Video driver - mICrO
Publicado por: AK47 en 09 de Febrero de 2003, 03:52:30 PM
                                Magnifico codigo, si señor!
¡Oh gracias gran maestro micro, por compartir tu sabiduria con nosotros, seguramente este codigo me salvara la vida!
El codigo es casi tan bueno como MI Pekechat que tambien se puede pillar en este foro. Asi que ya lo estais probando XDDD ;)

Bueno trabajo maetro micro  8)