Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Temas - SkyNetBCN

#1
Programación gráfica / C++, OpenGL y C#
24 de Enero de 2011, 06:48:54 PM
Con este título tan curioso, les explico.

Tenemos una aplicación escrita en C++ que dibuja una serie de cosas en una ventana normal (es un mini-juego). Nos gustaría hacer una especie de editor de niveles muy simple y para facilitarle la vida de algunos de los desarrolladores que intervendrán, había pensado hacer este editor en C#.

La pregunta es:
Puedo desde C++, dibujar en una ventana creada con C#? Yo pensaba que el manejador de la ventana de C# (Handle) me serviría para desde C++ dibujar en esa ventana, pero a pesar de no dar ningún tipo de error, no se renderiza nada. Alguien sabe cómo podría hacer esto que quiero? O, si alguien conoce una forma mejor de hacerlo, también me vendría bien alguna idea nueva...

Gracias y un saludo!  ^_^'
#2
Programación gráfica / Novato con OpenGL
20 de Noviembre de 2010, 03:31:03 PM
Qué tal amigos,

Como dije en mi anterior mensaje, estoy empezando con OpenGL un proyecto para iPAD/iPhone. Al final, hemos decidido hacerlo para PC (en C (no c++)) para luego poder compilarlo sin demasiados problemas en Xcode (cambiando obviamente el ratón y teclado por la pantalla táctil de estos dispositivos).

La preguntas es la siguiente: necesitamos renderizar objetos en 3D. Habíamos pensado en el formato OBJ, por su sencillez. Luego pensamos en 3DS y luego en otros... La verdad es que todo el grupo venimos de DirectX donde lo común son sus formatos .x o .mesh.

Me gustaría que me aconsejasen acerca de cual es el mejor formato, sabiendo que lo que necesitamos son objetos en 3D, con sus texturas, normales y coordenadas de textura. La mayoría serán objetos estáticos pero algunos serán personas que deberían estar animadas (por ejemplo, una persona caminando...

¿Cuál es el mejor formato para esto? Y también, ¿cuál es la mejor herramienta para crear dicho formato?  (De antemano ya les digo que lo que mejor manejamos es el 3D Studio Max, pero algunos de sus exportadores no me acaban de convencer...)

Les agradezco cualquier tipo de ayuda, ya que en este tema estamos totalmente perdidos y supongo que las decisiones que tomemos ahora serán importantes, porque nos afectarán durante todo el desarrollo...

Muchas gracias de antemano!
Saludos,
SkyNet
#3
Programación gráfica / iPAD y iPod
13 de Octubre de 2010, 08:13:30 AM
Qué tal compañeros,

Llevo un tiempo hablando con un compañero de mi trabajo y estamos definiendo un juego que queremos desarrollar. Pensamos en desarrollarlo para las plataformas iPad y iPod, pero él es progrmador de PHP y yo de c++. Tengo experiencia con programación con DirectX 9.0c así que no soy nuevo en el mundo de la programación gráfica, pero la verdad es que no tengo ni idea de qué necesito exactamente para llevar a cabo nuestro mini-proyecto...

¿Alguien podría guiarme un poco acerca de qué necesito para empezar a desarrollar una aplicación gráfica para iPad/iPod (a parte del propio iPad o iPod)? No sé, cualquier cosa me vale, manuales de referencia, libros, SDK's, lo que sea...

Muchas gracias de antemano!!  :)
Un saludo,
SkyNetBCN
#4
Programación gráfica / Rarezas con VSync
12 de Octubre de 2008, 07:52:35 PM
Qué tal compañeros... Aquí estoy una vez más para ver si alguien me puede echar un cable con, esta vez, más que problema, duda; ahí va:

Sigo liado con mi pequeña aplicación (DirectX 9.0C) de novato en el que de momento, se ven unos cuantos objetos en pantalla, algún sprite y algo de iluminación... El problema (dije duda??  :P) es que cuando renderizo a pantalla completa con sincronización vertical activada, todo se ve perfecto, sin embargo, cuando desactivo la vSync (obviamente pasa de unos 55fps a unos 2000fps) los sprites y los objetos afectados por las luces se ven con una especie de "defectos"  ???horizontales nada agradables.

Supongo que a alguien le ha pasado lo mismo alguna vez.. si alguien me pudiese explicar por qué pasa esto o como evitarlo, me haría un favor...

Muchas gracias de antemano,
Salu2,
SkyNetBCN
#5
Programación gráfica / D3DXIntersect
30 de Septiembre de 2008, 07:48:57 PM
Qué tal compañeros. Le he dado un montón de vueltas a esto, pero no consigo entender el resultado:

Basándome en el código del Tutorial de D3D llamado picking, intenté determinar si el usuario "clicaba" con el ratón en algún objeto de la escena, pero la función D3DXIntersect Siempre me retorna true!!  :grrr:. Por lo que he leído por ahí no debería haber mucho más misterio, pero bueno, copiaré el código por si alguien me puede echar una mano:


... // Declaración de variables ...

DXUTGetD3D9Device()->GetTransform( D3DTS_WORLD, &matWorld);
DXUTGetD3D9Device()->GetTransform( D3DTS_VIEW, &matView );
DXUTGetD3D9Device()->GetTransform( D3DTS_PROJECTION, &pmatProj );

GetCursorPos( &ptCursor );
ScreenToClient( DXUTGetHWND(), &ptCursor );
       
D3DXVECTOR3 v;
v.x = ( ( ( 2.0f * ptCursor.x ) / pd3dsdBackBuffer->Width ) - 1 ) / pmatProj._11;
v.y = -( ( ( 2.0f * ptCursor.y ) / pd3dsdBackBuffer->Height ) - 1 ) / pmatProj._22;
v.z = 1.0f;

mWorldView = matWorld * matView;
D3DXMatrixInverse( &mInverse, NULL, &mWorldView );       

vPickRayDir.x = v.x * mInverse._11 + v.y * mInverse._21 + v.z * mInverse._31;
vPickRayDir.y = v.x * mInverse._12 + v.y * mInverse._22 + v.z * mInverse._32;
vPickRayDir.z = v.x * mInverse._13 + v.y * mInverse._23 + v.z * mInverse._33;
vPickRayOrig.x = mInverse._41;
vPickRayOrig.y = mInverse._42;
vPickRayOrig.z = mInverse._43;

D3DXIntersect( pMesh, &vPickRayOrig, &vPickRayDir, &bHit, NULL, NULL, NULL, &Distance, NULL, NULL );

if (bHit)
returnValue = true;


Creo que todo lo que hago es lo que se tiene que hacer, así que si alguien ve el error que yo no veo, se lo agradecería.

Un saludo!  ^_^'
#6
Programación gráfica / Arma en FPS
02 de Septiembre de 2008, 07:52:10 AM
Que tal compañeros. Estaba haciendo una minidemo de un juego muy sencillo en DirectX y me preguntaba como hacer para que en un FPS, el renderizado del arma quede siempre bien cuadrado en la imagen como si el personaje la sostuviera en su mano derecha. Porque si el personaje se va moviendo por el escenario, habrá que colocar en cada frame el arma en "las manos" del mismo y la verdad es que no se me ocurre como hacerlo, alguna idea?  ???

Gracias,
#7
Programación gráfica / Archivos .fx en Mesh
05 de Agosto de 2008, 08:05:11 AM
Qué tal. Tengo una curiosidad. Me gustaría saber cómo hace la aplicación "DXViewer" (que viene con el DirectX SDK) para cargar los archivos .fx que vienen dentro de un archivo .X?

Lo quiero implementar en mi código pero no se me ocurre cómo hacerlo...
Gracias de antemano
#8
Programación gráfica / Hago mal el DrawPrimitive?
23 de Enero de 2007, 10:42:03 PM
Hola compañeros, estoy intentando dibujar "a mano" un objeto (mesh) en vez de pasárselo entero al DirectX, pero me dibuja una auténtica guarrada...



lo que intento es:

Mesh->GetVertexBuffer( &Vertices ):
Num = Mesh->GetNumVertices();
Vertices->Lock( 0, 0, (void**)&pVertices, 0  );
Vertices->Unlock();
Vertices->Release();
//
//..
//..
//
3D->SetStreamSource( 0, VerticesParedes, 0, sizeof(D3DVERTEX) );
3D->SetFVF( D3DVERTEX::FVF );
3D->DrawPrimitive(D3DPT_TRIANGLELIST ,0,Num/3);

El fin de todo esto es (una vez consiga como mínimo dibujar correcamente algo  :P ) optimizar el renderizado, ya que dibujo un mapa muy grande y el directX me dibuja toooodo... y evidentemente los fps caen en picado....

gracias de antemano!
#9
Programación gráfica / Puertas... xD
01 de Enero de 2007, 06:43:30 PM
Qué tal compañeros, la verdad es que no sabía exactamente dónde colocar este post, porque toca otros temas a parte de la programación... pero ahí va.

Estoy diseñando un mapa con 3dMax7 para poder andar por él después con una mini-app que hecho con directX. Lo exporto a .x para utilizarlo en mi app.
El problema es que para hacer los huecos de las puertas utilizo el operador booleano del 3dMax pero a la hora de exportar, se me exporta como si fuese una pared por lo cual cuando desde mi app vas caminando por el mapa en 3d ves el hueco de la puerta pero no lo puedes atravesar porque lo trata como "sólido".

No sé si esto os habrá pasado alguna vez a alguno de vosotros, si es así, necesito que alguien me diga alguna otra manera de hacer esto mismo...

gracias
#10
Programación gráfica / + colisiones...
12 de Diciembre de 2006, 05:13:06 PM
Que tal compañeros... ya hace unos días que abrí esta discusión pidiendo orientación acerca de cómo utilizar colisiones en un fps contra una mapa cargado en un objeto CDXUTMesh. Después de intentarlo y más intentarlo no he podido (ya dije que soy novato...  :( )

He intentado varias cosas, la que más resultado me ha dado (aunque sea una caca, jeje) fue descomponer (en mi caso me iba bien) el movimiento que se iba a realizar para comprobar si frontal o lateralmente se producía una colisión, la comprobación la hacía con la función D3DXIntersect que me devolvía la distancia al objeto (si es que había colisión).

Pero bueno, como ya he dixo, el resultado, aunque se acerca, es una m...  ya casi me doy por vencido... si alguien me quiere echar una mano ya saben, o si quieren para una comunicación más "fluida" agregarme al msn.. así os paso código o lo que haga falta...

Gracias!!
#11
Programación de audio / DXUTSound
14 de Noviembre de 2006, 10:38:57 PM
Que tal compañeros... A ver si a alguien se le ocurre pk puede fallar la función "CSoundManager::Create" llamándola de la siguiente manera?

manager.Create( &sonido, L"C:\\sonido.wav");

Falla en la siguiente línea
   apDSBuffer = new LPDIRECTSOUNDBUFFER[dwNumBuffers];

y no tengo ni idea de por qué,

agradecería una ayuda pk esto me estávolviendo loco...

Gracias!! :D
#12
Programación gráfica / Colisiones
11 de Noviembre de 2006, 03:16:04 PM
Hola de nuevo... como algunos de vosotros ya sabréis, estoy empezando a hacer mis primeras chapucillas con DirectX 9 y c++.

Me gustaría saber cual considerais que es la mejor manera (y como mejor me refiero a la más simple, aunque sea más precisa) de detectar colisiones entre un objeto (Mesh.x) y lo que sería el jugador en un juego en 1ª persona...
quizás creando una "esfera" alrededor de la camara detectando si el mesh se encuentra dentro de la esfera? no sé, esque realmente no tengo ni idea... cual es vuestra opinión?

Gracias!!

Saludos
#13
Programación gráfica / Texturas...
29 de Octubre de 2006, 09:58:04 PM
Qué tal compañeros...

He creado una habitación (4 paredes simples) con 3dMax y las exporto a .x y cuando las cargo como mesh y renderizo, las texutras se me ven como muy estiradas( para entendernos).
Como puedo resolver esto? supongo que la pregunta es una xorrada pero sk soy semi-nuevo en esto...  :o

Gracias de antemano
#14
Programación gráfica / Instalación de Aplicación DirectX
13 de Julio de 2006, 08:14:53 PM
Que tal familia.

Me gustaría saber cual es la mejor manera de Crear un Instalable de una aplicación desarrollada con Visual Studio .NET 2003, bajo VC++ y utilizando el DirectX SDK. El problema es que si cojo los archivos necesarios (exe, modelos, texturas) y me las llevo a otro PC, siempre me dice que falta algún archivo, aunque en ese PC esté instalada la última versión de DirectX.

Gracias y un saludo.
#15
General Programadores / Ayuda con función....
12 de Julio de 2006, 08:36:13 AM
Alguien me puede indicar un ejemplo válido de "WideCharToMultiByte"??

Lo he intentado utilizar pero nunca me ha funcionado a la hora de pasar un WCHAR[260] a un tipo MultiByte.

Alguien me puede ayudar?
Gracias de antemano
#16
Programación gráfica / No sé que hacer con esto
10 de Julio de 2006, 05:45:26 PM
Que tal familia...
Tengo hace mucho tiempo un problema, al cual ya me dieron una "solución" en este foro, pero no me sirvió.

Vayamos por partes. Necesito cargar un archivo raw para generar un mapa de alturas. Como no sabía hacerlo, me bajé un manual que tenía el siguiente código:

std::ifstream inFile(fileName.c_str(), std::ios_base::binary);
std::vector<BYTE> in( _numVertices );
if( inFile == 0 )  
 return false;
inFile.read((char*)&in[0], //buffer
      (std::streamsize)(in.size()));// número de bytes
inFile.close();
_heightmap.resize( _numVertices );
for(int i = 0; i < (int)(in.size()); i++)
 _heightmap = in;

y con esto todo funcionaba. El problema ahora es que trabajo con Unicode, y por tanto
 std::ifstream inFile(fileName.c_str(), std::ios_base::binary);
no me sirve.

En este foro alguien me dio una solucion para pasar de Unicode a Multibyte con la función WideCharToMultiByte. Pero la verdad es que nunca he conseguido hacer que esta función me pase de nada a nada.


Por eso,, alguien me puede proporcionar otra manera de cargar archivos raw?? También he probado de la siguiente manera, pero no me carga las "alturas" correcamente:

   FILE *stream;
   if( (stream  = _wfopen(WCHAR ruta, L"r")) != NULL )
   {
      char list[64] = "";
      size_t numread = fread( list, sizeof( stream ) , 64, stream );
      
      _heightmap.resize( _numVertices );
      int numclosed = _fcloseall( );

      for(int i = 0; i < _numVertices; i++)
         _heightmap = list;      
   }

y la verdad es que ya no sé por qué camino tirar... agradecería una ayuda por parte de alguien. Puedo enviar más código si esto no ha quedado claro...

Gracias de antemano por la ayuda..

Saludos
#17
Programación gráfica / Cargar Archivo Raw
28 de Febrero de 2006, 06:28:05 PM
 Hola que tal...

Estoy intentando cargar un archivo raw y leer el contenido para crear un mapa de alturas (vaya, un HeightMap). pero no consigo leer los datos. No sé si tiene algo que ver, pero todos los problemas me vienen desde que empecé a programar con Unicode en vez de multibyte. Antes utilizaba std:ifstream, ahora esto no me sirve porque la cadena que contiene la ruta del archivo raw la tengo en wchar, alguien me propone algo?
Gracias
#18
General Programadores / Otra Vez Conversión De Datos...
28 de Febrero de 2006, 06:25:06 PM
 Una vez más me encuentro con la enfarragosa tarea de realizar una conversión de datos, en esta ocasión es de (WCHAR) a (const char*), alguien me puede echar un cable?
Gracias de antemano  :P  
#19
General Programadores / Problemas Con Conversión De Datos
08 de Febrero de 2006, 08:25:51 PM
 ¿Cómo puedo convertir el tipo LPSTR a WCHAR?
He probado con:

WCHAR aux[MAX_PATH];
swprintf(aux, L"%s", MiVariableLPSTR);

pero el valor que toma aux es un carro de símbolos y caracteres raros...

Gracias de antemano.
#20
Programación gráfica / Duda Con Wchar
05 de Febrero de 2006, 10:21:13 PM
 Hola, hasta ahora escribía mi código con formato multibyte, al cambiarlo a unicode "como me recomendaron en este foro", empecé a recibir errores y más errores al compialar... Hasta ahora, algo que hacía con algo tan sencillo como:

TCHAR x[MAX_PATH];
GetCurrentDirectory(MAX_PATH,x);
wprintf(x,"%s\\Objects\\Marte.ccr",x);
Objeto = new CObjetos(x,d3dDevice);

ahora no hay manera... (nooo)   intento hacerlo ...

WCHAR x[MAX_PATH];
GetCurrentDirectory(MAX_PATH,str);
wprintf(x,"%s\\Objects\\Marte.ccr", x);

pero al hacer el wprintf no se me copia NADA en la variable x...

Alguna ayuda??
Muchas gracias.





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.