Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Libreria multiplataforma dib

Iniciado por zupervaca, 21 de Septiembre de 2006, 11:19:37 PM

« anterior - próximo »

zupervaca

Pues si le echado "webs" y he liberado bajo LGPL toda la libreria multiplataforma que he creado, la llamada dib para pc que ahora mismo soporta un porron de cosas, os podeis descargar el codigo desde aqui: http://www.davidib.com/projects_2006.asp

No os acojoneis cuando veais todas la jerarquia de clases, realmente no es para tanto, lo digo, por que mas de un conocido se asusto cuando vio la documentacion, que por cierto la podeis ver aqui (tambien se descarga con el codigo fuente): http://www.davidib.com/projects/2006/dib/doc/index.html

Espero que me critiqueis el codigo :wink:

AgeR

Jejeje otra librería stratera más, al final no vamos a saber cual elegir!

Unas cosas que echo de menos para usarla en mis proyectos 2D:
- Sonido: archivos ogg, o incluso módulos (it, xm, mod...).
- Compatibilidad Mac (por lo visto de la librería no sería muy complejo).
- Ejemplos y tutoriales.

Por lo demás, pinta muy bien, jejee.

Felicidades tanto por hacerla como por publicarla!

imaGame

Muchas gracias zuper!
Te vamos a llamar el monstruo de los objetos ;-)

Le he echado un vistazo por encima a la documentación en línea y tiene muy buena pinta,..vamos que estarán contentos en el nuevo curro con tu fichaje (ya te pueden cuidar bien)

Taluego
imagame

zupervaca

Gracias por los comentarios :oops:

He actualizado el dib.rar con un minitutorial, muestra un ejemplo muy sencillo de como programar a alto nivel con la libreria.

main.cpp
----------

// main.cpp

// Mostrar memoria perdida
#ifdef DEBUG
#define dib_SeeMemoryLeaks
#endif

// Aplicaciones para windows
#ifdef dib_Windows
#define dib_Win32_Form
#define dib_Direct3D9
//#define dib_OpenGL
#define dib_DirectInput8
#define dib_DirectSound8
//#define dib_OpenAL
#pragma warning(disable : 4996)
#endif

// Aplicaciones para linux
#ifdef dib_Linux
#define dib_X11_Form
#define dib_OpenGL
#define dib_X11_Input
#define dib_OpenAL
#endif

// Incluir base de la aplicacion
#include "../dib/system/app/main.h"

// Clase app global
static dib::System::App::Main gApp;

// Incluir estados
#include "state_game.h"

// Entrada del app
#if defined(dib_Windows) && !defined(DEBUG)
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
#else
int main()
#endif
{
// Iniciar el app
gApp.Run<State_Game>();
return 0;
}

En este archivo se especifica las librerias a usar y se crea una clase App global que inicializa todo para olvidarnos del tema.

stategame.h

// state_game.h

#include "../dib/system/resource/managers.h"
#include "../dib/system/resource/xml/loader.h"
#include "../dib/system/resource/xml/plugins/default.h"
#include "../dib/system/math/math.h"

// Estado inicial del app
class State_Game : public dib::System::App::IState
{
// Virtuales
public:
/// <summary>Se llama cuando se ha seleccionado para su uso</summary>
void OnSelect()
{
// Inicializar los recursos
this->resources.Initialize( &gApp.render, &gApp.master, &gApp.sprite, &gApp.input );
// Leer los recursos de un xml
dib::System::Resource::XML::Loader loader;
dib::System::Resource::XML::Plugins::Default plugins;
this->resources.DeleteContent();
if( !loader.Add("res/pruebas.xml", &plugins, &this->resources) )
{
// Error
dib::Log::Write( "Error al realizar el parser del archivo de recursos XML" );
gApp.Exit();
return;
}
dib::System::Collection::DeleteContent( plugins );
}

/// <summary>Se llama cuando se ha deseleccionado para su uso</summary>
void OnUnselect()
{
this->resources.DeleteContent();
}

/// <summary>Evento que sucede siempre que se requiere actualizar los estados de entrada, teclados, raton...</summary>
void OnUpdateActions()
{
int state = this->resources.actions.Get("1")->GetState();
if( state != 0 )
{
gApp.Exit();
}
}

/// <summary>Se llama cuando se quiere actualizar la escena</summary>
void OnUpdateScene()
{
}

/// <summary>Se llama cuando se quiere renderizar la escena</summary>
void OnRenderScene()
{
dib::System::Math::Matrix4x4<float> view, projection, viewProjection, transform;
view.Identity();
projection.Perspective( dib::System::Math::DegreeToRadian(45.0f), 800.0f / 600.0f, 0.1f, 1000000.0f );
viewProjection = view * projection;
// Borrar el fondo
dib::System::Drawing::Render *render = &gApp.render;
dib::System::Drawing::IRenderState *renderState = render->GetRenderState();
render->Clear();
// Renderizar sprites
dib::System::Drawing::Sprite *sprite = &gApp.sprite;
renderState->ZBufferEnable( false );
renderState->SetVertexShader( NULL );
renderState->SetPixelShader( NULL );
sprite->Begin();
// Renderizar la nebulosa
dib::System::Drawing::CutterList::Cut *cut = this->resources.cutterLists.Get("fondo")->GetCut(4);
sprite->SetCut( cut );
transform.PosRotCenter( 0.0f -cut->spotx, 0.0f -cut->spoty, 0.0f, 0.0f, 0.0f );
sprite->SetTransform( transform );
sprite->Draw();
sprite->End();

sprite->ActiveAlpha( dib::System::Drawing::IRenderState::BlendMode::SrcAlpha, dib::System::Drawing::IRenderState::BlendMode::InvSrcAlpha );
sprite->Begin();
this->resources.fonts.Get("robotic_font")->DrawText( "fuente grafica", 100, 100 );
sprite->End();
sprite->UnActiveAlpha();
}

// Valores privados
private:
/// <summary>Managers de recursos</summary>
dib::System::Resource::Managers resources;
};

En este archivo se especifica el estado del juego en el que leemos los recursos del minitutorial mediante un archivo xml al manager, se comprueba una accion, se renderiza una textura y una fuente grafica entre otras cosas.

El nuevo dib.rar contiene la libreria, la documentacion y un proyecto compilable desde .net para windows y un makefile para linux.

NOTA: En el minitutorial se escucha una musica que se autoejecuta desde el recurso xml ya que esta puesto un tag para ello.

Me imagino que la programacion a alto nivel con la libreria no os asustara tanto :wink:

Si necesitais alguna aclaracion, detalles de algo o lo que sea podeis preguntar sin miedo.
He de decir que la libreria no usa ninguna libreria externa salvo las de la plataforma donde se ejecuta, es decir, usa directx, ogl, oal, etc. pero nunca una libreria intermedia como pudiera ser sdl, etc. ya que mi principal objetivo con la libreria es crearlo yo todo exceptuando claro esta los drivers que me hacen acceder al hardware.

zupervaca

Bueno... pues he creado un proyecto en codeplex para la libreria, le podeis hechar un vistazo aqui: http://www.codeplex.com/Wiki/View.aspx?ProjectName=dibplus

PD: ¿Alguien me puede explicar como va lo de la pestaña de codigo fuente? Ahora mismo lo he puesto en una release 1.0

Vicente

A la pestaña de source code van los check-ins que hagas desde en el Team Server (si es que subes tu proyecto al Team Server claro ;)). Cada vez que hagas un check-in, aparecerá ahí con un comentario.

Un saludo!

Vicente

zupervaca

Gracias, ya me estoy bajando el team explorer.

Que ilusion me hace ver que 2 personas se han descargado el codigo ya :D, no son muchos, pero por lo menos algo es algo, a los demas... ellos se lo pierden :lol:






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.