Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una beta para ir abriendo boca

Iniciado por Drácula, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Drácula

                                Bueno, teneis una beta en :

http://webs.ono.com/dracular/Beta1.zip

El código del programa está en juego.cpp
Os pediría que no os fijarais en la beta en sí(que es muuy fea) sino en el código que se utiliza para generar todo esto.

Juanjo Pastor me pidió una beta para ir empezando, y esta es la 2ª y por si a alguien le interesa...

¡ATENCION LA BETA YA NO ESTA DISPONIBLE!

[ Este Mensaje fue editado por: Drácula el 2002-08-18 12:44 ]                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Daventry

                                No me tira :triste:. Me sale la pantalla oscura, con el texto que indica mi tarjeta gráfica, los FPS, las caras, las teclas de control, etc. Aquí va el paste del log, espero que te sea útil :ojo:

INICIO CXVideo::CXVideo
FIN CXVideo::CXVideo
INICIO Características del Device
HAL (hw vp): NVIDIA GeForce2 MX 100/200  (D24S8)
FullScreenGamma OK
CanCalibrateGamma NO DISPONIBLE
Utilizando formato por defecto para las texturas A8R8G8B8
Nº Máximo de Streams para Vertex Buffers=16. Tamaño máximo en bytes(Stride)=256
Escritorio: Ancho=800 Alto=600
---------TEXTURAS---------
Máx Anchura x Altura: 2048 x 2048
Nº máximo de texturas simultáneas:2
Soporta compresión DXT1
Soporta compresión DXT2
Soporta compresión DXT3
Soporta compresión DXT4
Soporta compresión DXT5
FIN Características del Device
INICIO CXVideo::Iniciar
FIN CXVideo::Iniciar
INICIO CXTextura::CXTextura.sin textura
CXTextura::Cargar.No encuentro sin textura
FIN CXTextura::CXTextura.sin textura
INICIO CXSkins::Nuevo.Sin skin
INICIO CXSkin::CXSkin.Sin skin
FIN CXSkin::CXSkin.Sin skin
FIN CXSkins::Nuevo.Sin skin
INICIO CXVertexShaders::CrearShadersPorDefecto
INICIO CXVertexShader::Assemble.PosTex1
FIN CXVertexShader::Assemble.PosTex1
CXVertexShader::Crear.D3DERR_INVALIDCALL
INICIO CXVertexShader::Assemble.PosDiffuseTex1
FIN CXVertexShader::Assemble.PosDiffuseTex1
CXVertexShader::Crear.D3DERR_INVALIDCALL
INICIO CXVertexShader::Assemble.PosRHWUnColor
FIN CXVertexShader::Assemble.PosRHWUnColor
CXVertexShader::Crear.D3DERR_INVALIDCALL
FIN CXVertexShaders::CrearShadersPorDefecto
INICIO CXVideo::Restaurar
INICIO CXFuente::Restaurar
FIN CXFuente::Restaurar
INICIO CXVertexShaders::Restaurar
CXVertexShader::Crear.D3DERR_INVALIDCALL
CXVertexShader::Crear.D3DERR_INVALIDCALL
CXVertexShader::Crear.D3DERR_INVALIDCALL
FIN CXVertexShaders::Restaurar
INICIO CXVideo::LeerStatesActuales
SI AQUI APARECEN ERRORES ES NORMAL
FIN CXVideo::LeerStatesActuales
FIN CXVideo::Restaurar
CXImportarX::Cargar.graficostree.x
INICIO CXTextura::CXTextura.texTree
Encontrado .graficostexTree.tga
FIN CXTextura::CXTextura.texTree
INICIO CXSkins::Nuevo.tree.x
INICIO CXSkin::CXSkin.tree.x
FIN CXSkin::CXSkin.tree.x
FIN CXSkins::Nuevo.tree.x
INICIO CXTextura::Cargar.graficostexTree.tga
Nº de niveles(mipmaps):1
Formato:DXT1(x31545844)   Ancho:256   Alto:256
FIN CXTextura::Cargar.graficostexTree.tga
INICIO CXEscena::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXLuces::DestruirLosObjetos
FIN CXLuces::DestruirLosObjetos
FIN CXEscena::DestruirLosObjetos
INICIO CXVideo::DestruirLosObjetos
INICIO CXFuente::Invalidar
FIN CXFuente::Invalidar
INICIO CXTextura::~CXTextura.sin textura
FIN CXTextura::~CXTextura.sin textura
INICIO CXTextura::~CXTextura.texTree
FIN CXTextura::~CXTextura.texTree
INICIO CXSkin::~CXSkin.Sin skin
FIN CXSkin::~CXSkin.Sin skin
INICIO CXSkin::~CXSkin.tree.x
FIN CXSkin::~CXSkin.tree.x
INICIO CXFuentes::DestruirLosObjetos.
INICIO CXFuente::Destruir.Arial
INICIO CXFuente::Invalidar
FIN CXFuente::Invalidar
FIN CXFuente::Destruir.Arial
FIN CXFuentes::DestruirLosObjetos.
INICIO CXMallas::DestruirLosObjetos
INICIO CXMalla::Destruir.tree
INICIO CXBloquesVertices::DestruirLosObjetos
FIN CXBloquesVertices::DestruirLosObjetos
FIN CXMalla::Destruir
INICIO CXBloquesVertices::DestruirLosObjetos
FIN CXBloquesVertices::DestruirLosObjetos
INICIO CXMalla::Destruir.suelo
INICIO CXBloquesVertices::DestruirLosObjetos
FIN CXBloquesVertices::DestruirLosObjetos
FIN CXMalla::Destruir
INICIO CXBloquesVertices::DestruirLosObjetos
FIN CXBloquesVertices::DestruirLosObjetos
FIN CXMallas::DestruirLosObjetos
INICIO CXVertexShaders::DestruirLosObjetos
FIN CXVertexShaders::DestruirLosObjetos
FIN CXVideo::DestruirLosObjetos
INICIO CXActores::DestruirLosObjetos
FIN CXActores::DestruirLosObjetos
INICIO CXJerarquias::DestruirLosObjetos
FIN CXJerarquias::DestruirLosObjetos
INICIO CXActores::DestruirLosObjetos
FIN CXActores::DestruirLosObjetos
INICIO CXFuentes::DestruirLosObjetos.
FIN CXFuentes::DestruirLosObjetos.
INICIO CXEscena::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXSprites::DestruirLosObjetos
FIN CXSprites::DestruirLosObjetos
INICIO CXLuces::DestruirLosObjetos
FIN CXLuces::DestruirLosObjetos
FIN CXEscena::DestruirLosObjetos
INICIO CXActores::DestruirLosObjetos
FIN CXActores::DestruirLosObjetos
                               
img src='http://www.danasoft.com/sig/vipersig.jpg' border='0' alt='user posted image'>

Grugnorr

                                Lo mismo digo :lengua:

me sale gris oscura, nada del árbol, pero sí se ve el texto

Tengo una GF2Mx400 64 RAM.Pego un extracto del Log:

INICIO CXVertexShaders::CrearShadersPorDefecto
INICIO CXVertexShader::Assemble.PosTex1
FIN CXVertexShader::Assemble.PosTex1
CXVertexShader::Crear.D3DERR_INVALIDCALL
INICIO CXVertexShader::Assemble.PosDiffuseTex1
FIN CXVertexShader::Assemble.PosDiffuseTex1
CXVertexShader::Crear.D3DERR_INVALIDCALL
INICIO CXVertexShader::Assemble.PosRHWUnColor
FIN CXVertexShader::Assemble.PosRHWUnColor
CXVertexShader::Crear.D3DERR_INVALIDCALL
FIN CXVertexShaders::CrearShadersPorDefecto


Si quiere el resto, pídelo y te lo envío por email...
                               
hat the hells!

Grugnorr

                                Qué hace el shader que tira en una GF4MX y no en una GF2MX, cuando soportan lo mismo básicamente?(tío, que mala compra hiciste :lengua:)
                               
hat the hells!

Grugnorr

                                Ando mirando las cabeceras...

Tío, larga vida a las STL, o al menos a las listas enlazadas templatizadas!

Qué significa CASE como prefijo de la mitad de las clases?. Las demás empiezan por CX. Larga vida a los namespaces...

Sigue currándotelo, te mereces todo mi respeto...


                               
hat the hells!

jpastor

                                Creo que las clase con prefijos CASE son las usadas para cargar escenas ASE: CASEMaterial, CASEMapDiffuse, ...


_________________
Wipe them out ... All of them

[ Este Mensaje fue editado por: jpastor el 2002-08-15 17:54 ]                                

Grugnorr

                                Lo acabo de deducir...

Sigo sin entender algunas cosas de tus listas, pero weno, tengo que empollar :ojo:

Ya lo hablaremos, mira a ver que pasa con esos VertexShaders...

Añadir que tengo las DX9 instaladas(beta), pero como a Daventry que no las tiene le pasa lo mismo...un caso menos :lengua:
                               
hat the hells!

Drácula

                                ¡No tengo ni idea de lo que pasa con los Shaders!

Aquí está la clase:
// AQUI DEFINIMOS LOS SHADERS POR DEFECTO

static float   c[4] = {0.0f,0.5f,1.0f,2.0f};

// Posicion+Diffuse+Textura
// Constants
//      reg c0      = (0,0.5,1.0,2.0)
//      reg c4-7   = WorldViewProj matrix
//      reg c8      = constant color
// Stream 0
//       reg v0      = position ( 4x1 vector )
//      reg v5      = diffuse color
//      reg v7      = texcoords ( 2x1 vector )
static const char sPosDiffuseTex1[] =
"vs.1.0                             //Shader version 1.0         n"
"dp4     oPos.x , v0   , c4         //emit projected x position      n"
"dp4     oPos.y , v0   , c5         //emit projected y position      n"
"dp4     oPos.z , v0   , c6         //emit projected z position      n"
"dp4     oPos.w , v0   , c7         //emit projected w position      n"
"mov     oD0    , v5                //Diffuse color = vertex color  n"
"mov     oT0.xy , v7                //copy texcoords            n";

static DWORD PosDiffuseTex1[] =
{
   D3DVSD_STREAM(0),
   D3DVSD_REG(D3DVSDE_POSITION, D3DVSDT_FLOAT3 ),         //D3DVSDE_POSITION,  0  
   D3DVSD_REG(D3DVSDE_DIFFUSE,  D3DVSDT_D3DCOLOR ),      //D3DVSDE_DIFFUSE,   5  
   D3DVSD_REG(D3DVSDE_TEXCOORD0,D3DVSDT_FLOAT2 ),          //D3DVSDE_TEXCOORD0, 7  
   D3DVSD_CONST(0,1),*(DWORD*)&c[0],*(DWORD*)&c[1],*(DWORD*)&c[2],*(DWORD*)&c[3],
   D3DVSD_END()
};

// Posicion XYZRHW+Textura+Color en C8
// Constants
//      reg c8      = constant color
// Stream 0
//       reg v0      = position ( 4x1 vector )
static const char sPosRHWUnColor[] =
"vs.1.0                             //Shader version 1.0         n"
"mov     oPos, v0                                                   n"
"mov     oD0    , c8                //Diffuse color = vertex color  n";

static DWORD PosRHWUnColor[] =
{
   D3DVSD_STREAM(0),
   D3DVSD_REG(0, D3DVSDT_FLOAT4 ),   
   D3DVSD_END()
};

// Posicion+Textura
// Constants
//      reg c0      = (0,0.5,1.0,2.0)
//      reg c4-7   = WorldViewProj matrix
//      reg c8      = constant color
// Stream 0
//       reg v0      = position ( 4x1 vector )
//      reg v5      = texcoords ( 2x1 vector )
static const char sPosTex1[] =
"vs.1.0                             //Shader version 1.0         n"
"dp4     oPos.x , v0   , c4         //emit projected x position      n"
"dp4     oPos.y , v0   , c5         //emit projected y position      n"
"dp4     oPos.z , v0   , c6         //emit projected z position      n"
"dp4     oPos.w , v0   , c7         //emit projected w position      n"
"mov     oT0.xy , v1                //copy texcoords            n";

static DWORD PosTex1[] =
{
   D3DVSD_STREAM(0),   // Vértices
   D3DVSD_REG(0, D3DVSDT_FLOAT3 ),
   D3DVSD_STREAM(1),   // Texturas
   D3DVSD_REG(1,D3DVSDT_FLOAT2 ),
   D3DVSD_CONST(0,1),*(DWORD*)&c[0],*(DWORD*)&c[1],*(DWORD*)&c[2],*(DWORD*)&c[3],
   D3DVSD_END()
};

void CXVertexShaders::CrearShadersPorDefecto()
{ CXVertexShader *v;

   Merlin.Debug(_T("INICIO CXVertexShaders::CrearShadersPorDefecto"));
   v=Nuevo(_T("PosTex1"));
   v->Assemble(CXString(sPosTex1));
   v->Crear(PosTex1);

   v=Nuevo(_T("PosDiffuseTex1"));
   v->Assemble(CXString(sPosDiffuseTex1));
   v->Crear(PosDiffuseTex1);

   v=Nuevo(_T("PosRHWUnColor"));
   v->Assemble(CXString(sPosRHWUnColor));
   v->Crear(PosRHWUnColor);

   Merlin.Debug(_T("FIN CXVertexShaders::CrearShadersPorDefecto"));
}

/*
---------------------------------------------------------------------
                          CXVertexShader
---------------------------------------------------------------------
*/
CXVertexShader::CXVertexShader(const CXString &nombre)
{
   EstablecerNombre(nombre);
   m_Shader=0;
   m_BufferShader=NULL;
   m_Errores=NULL;
   m_Declaracion=NULL;
}

CXVertexShader::~CXVertexShader()
{
   Destruir();
}

void CXVertexShader::Restaurar()
{
   if(m_Declaracion==NULL) return;

   if(m_Shader!=0) { Video.Device()->DeleteVertexShader(m_Shader);m_Shader=0; }

   Crear(m_Declaracion);
}

bool CXVertexShader::Assemble(CXString &shader)
{

   Merlin.Debug(_T("INICIO CXVertexShader::Assemble"),*Nombre());
   m_Resultado=D3DXAssembleShader(shader,shader.Longitud()-1,0,NULL,&m_BufferShader,&m_Errores);
   if(FAILED(m_Resultado)) {
      Merlin.Debug((char*)m_Errores->GetBufferPointer());
      return false;
   }
   Merlin.Debug(_T("FIN CXVertexShader::Assemble"),*Nombre());
   return true;
}
/*
   Es muy importante que la declaración se haga con una variable global, NUNCA
   con una variable que esté en la pila, puesto que al restaurar, el programa
   sólo asocia el puntero, por tanto si está en pila, el valor será incorrecto.
*/
bool CXVertexShader::Crear(DWORD *declaracion)
{
   m_Declaracion=declaracion;
   m_Resultado=Video.Device()->CreateVertexShader(declaracion,
      (DWORD *)m_BufferShader->GetBufferPointer(),
      &m_Shader,0);
   if(FAILED(m_Resultado)) {
      Video.EstablecerUltimoError(m_Resultado);
      Merlin.Debug(_T("CXVertexShader::Crear"),*Video.UltimoError());
      return false;
   }
   return true;
}

void CXVertexShader::EstablecerConstante(DWORD num,void *puntero,DWORD valor)
{
   Video.Device()->SetVertexShaderConstant(num,puntero,valor);
}

void CXVertexShader::Destruir()
{
   if(m_Shader!=0) { Video.Device()->DeleteVertexShader(m_Shader);m_Shader=0; }
   SAFE_RELEASE(m_BufferShader);
   SAFE_RELEASE(m_Errores);
}

Respecto a lo de los namespace y usar plantillas para las lista, estoy deacuerdo contigo. Pero es algo a lo que me resisto a utilizar por falta de conocimientos, aunque lo entiendo perfectamente, al no utilizarlo nunca no me da la seguridad que necesito, pero probablemente en la versión 2.0 me decidiré.
La clase CASE, se utiliza sólo para la carga de archivos .ASE, para todo lo demás, seutiliza CX. Cuando se trata de una estructura , se utiliza cx. Intento mantener una nomenclatura y un método, pero hay veces que resuelves de la forma sencilla!                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

zartan

                                Errrr ke yo chepa los pixels/vertex shaders son de geforce3 para arriba..                                

Grugnorr

                                Los VertexShaders los emula la CPU si la tarjeta no los implementa...
                               
hat the hells!

zartan

                                ufff EMULACION odiosa palabra :lengua: miedo me da pensar a la velocidad ke puede irrr XD
                               

jpastor

                                Yo te lo puedo decir ya que lo acabo de comprobar con la demo :triste:
                               

Drácula

                                ¿Pero veis algo en el código que he escrito en el post para que no os funcionen los Shader?                                
ltimas mejoras en Merlín: Multitextura.Control y generación automática de LOD.Importa ASE y X. Frustum Clipping por BB.Render añadido de wireframe y del BB.Animaciones por interpolación.Animaciones de textura...
Actualmente:Octree y jerarquías

Grugnorr

                                Sorry Drácula, sé muy muy poco de shaders(como que no he implementado ninguno :riendo:)


Y ahora empieza mi Atleti contra el Sevilla!!!!!!!!!!
                               
hat the hells!

AK47

                                Solamente añadir que los vertex shaders si los aceleran las GF2 y GF4MX. Los pixels shaders ya son de GF3 para arriba (quitando los GF4MX claro)
Ala, a ver si hay suerte con ese motor :ojo:                                






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.