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 - kittie4man

#1
General Programadores / SDL para Symbian (S60 3rd FP1)
07 de Mayo de 2010, 09:23:30 PM
Hola a todos!!

Ando por aca porque es uno de los pocos foros (si no el unico) donde hay gente que realmente sabe y quizas me pueden solucionar mi problema u orientarme a como solucionarlo.

Mi problema es que quiero usar la implementacion de SDL para Symbian S60 3rd FP1 pero no lo he conseguido.
Ya probe muchas cosas y no consegui correr un simple codigo con SDL en un N95-3.
Lei por ahi que si o si es necesario el ARM Compiler pero no estoy seguro ya que no hay mucha informacion especifica y las personas que hicieron algo, las contacte y no me pueden responder (por tiempo, ganas o lo que sea).

Si alguno quiere saber mas de mi problema al usar la implementacion de SDL aca hay mucha mas info ya que hice la pregunta en el foro oficial de nokia.
Discussion Boards > Development Platforms > Symbian C++ > Symbian Tools & SDKs > SDL + S60 3rd FP1 (The endless thread)
Link: http://discussion.forum.nokia.com/forum/showthread.php?t=199327

Mi idea es hacer juegos que usen el acelerometro para Symbian. Mas que nada por un tema personal, nada comercial.
Si alguno sabe como implementar correctamente SDL para Symbian le voy a agradecer mucho la respuesta.
O, si alguno sabe algun motor o API para hacer juegos con acelerometro para Symbian tambien le voy a agradecer info.

Desde ya muchas gracias.
Salu2
Juan Pablo
#2
Hola a todos!!

Despues de buscar por la web sin exito (espero no haber buscado mal :P) recurro a este foro que me a traido MUCHAS alegrias en cuanto a solucion de problemas cuando en mi tiempo libre programaba con OPENGL, SDL y C++.

El tema es asi:
Tengo una aplicacion en java cliente/servidor que al instalar crea automaticamente una DB según el mapeo de los elementos (vista, documento, etc) que heredan de un elemento (Element). Un adaptador mapea la estructura de estos elementos y crea la base de datos en MySQL (y MS SQL, etc).
Mi problema es que actualmente no tenemos un control de version automatica para la base de datos y cada vez que modificamos la base de datos tenemos que revisar que version tenia el cliente y hacerle los cambios a medida.

Mi intencion es hacer alguna clase en java (seria lo ideal) o aplicacion externa (como ultimo recurso) que controle la version del cliente y la del producto a instalar para realizar los cambios automaticamente (o lo mas automatico posible).
Tambien se me pidio que la version este identificada con un numero. Si no fuera por el numero se podria hacer un mapeo de los elementos y obtener la estructura de la DB para trabajar con esas 2 cosas pero con el numero me mareo ya.

Espero que me puedan ayudar.

Desde ya muchas gracias.
Salu2
Juan Pablo desde Argentina
#3
Programación gráfica / Entendiendo glPushMatrix y glPopMatrix
25 de Septiembre de 2008, 05:07:04 PM
Hola a todos!!

Voy directo al grano:
En mi proyecto tengo una clase que pinta unos tanques así:
Código (cpp) [Seleccionar]
glPushMatrix();
glEnable( GL_TEXTURE_2D );
glEnable(GL_BLEND);

glBindTexture( GL_TEXTURE_2D, _tGunCanon );

glTranslatef( _x, _y, 0.0);

glRotatef( _angleView, 0.0, 0.0, 1.0 );

//glScalef(1.0,1.0,1.0);

glPolygonMode(GL_FRONT, GL_FILL);
glBegin(GL_QUADS);
glTexCoord2f(1.0, 1.0); glVertex3f( -(_width+1.0),   _heigth,  0.0 );// Top Left Of The Texture and Quad
glTexCoord2f(1.0, 0.0); glVertex3f( -(_width+1.0), -(_heigth), 0.0 );// Bottom Left Of The Texture and Quad
glTexCoord2f(0.0, 0.0); glVertex3f(   _width,    -(_heigth), 0.0 );// Bottom Right Of The Texture and Quad
glTexCoord2f(0.0, 1.0); glVertex3f(   _width,  _heigth,  0.0 );// Top Right Of The Texture and Quad
glEnd();
glDisable( GL_TEXTURE_2D );
glDisable( GL_BLEND );
glPopMatrix();


Ahora, en el bucle principal del juego, en determinado momento, pinto un circulo y un cuadrado (ambos sin relleno) de esta manera:
Código (cpp) [Seleccionar]
GLfloat x=0.0, y=0.0, z=0.0;

glPushMatrix();
glTranslatef( px, py, 0.0 );
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINE_STRIP);
glVertex3f( px-5, py-8, 0.0 );// Top Left Of The Texture and Quad
glVertex3f( px-5, py+8, 0.0 );// Bottom Left Of The Texture and Quad
glVertex3f( px+5, py+8, 0.0 );// Bottom Right Of The Texture and Quad
glVertex3f( px+5, py-8, 0.0 );// Top Right Of The Texture and Quad
glVertex3f( px-5, py-8, 0.0 );// Top Left Of The Texture and Quad
glEnd();
glPopMatrix();

glPushMatrix();
glTranslatef( px, py, 0.0 );
glColor3f(0.5, 0.5, 1.0);
glBegin(GL_LINE_STRIP);
for (int angle = 0 ; angle < 180 ; ++angle)
{
x = radio * sin(angle);
y = radio * cos(angle);
glVertex3f( x , y, z);
}
glEnd();
glPopMatrix();


El render completo despues de pintar TODOS los objetos, lo hago así:
Código (cpp) [Seleccionar]
SDL_GL_SwapBuffers();
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();


El tema es el siguiente.
1.- Al usar color para pintar estos objetos se me colorean el resto de los objetos que sean pintados después.
2.- En ese metodo tengo 2 objetos creados con sus propias translaciones. La translacion del ultimo objeto (el circulo) creado se realiza y la primera (el cuadrado) no se hace. La translacion es la misma en ambos casos.
3.- Esa es la mejor forma de crear una circulo sin relleno? Esto viene a que NO se ve como quiero, parece como que tuviera un borde ancho y con irregularidades, si no se entiendo pongo una captura para que lo vean.

Mi pregunta es si tengo que poner un glColor3f(1.0, 1.0, 1.0); obligatoriamente al final de este metodo para que no pinte el resto de los objetos renderizados o hay algo mal en la implementacion de glPushMatrix, glPopMatrix o glLoadIdentity??

Espero que alguien pueda ayudarme.

Desde ya muchas gracias.

Salu2
Juan Pablo desde Argentina
#4
General Grafistas / [Pedido] Graficos muy simples
26 de Agosto de 2008, 02:02:42 AM
Hola a todos!

Soy programador y como pasa en el 90% de los casos, no tengo los conocimientos para hacer graficos aunque mas no sea, decentes.
Este mensaje es para ver si alguna alma caritativa me puede brindar unos graficos sencillos.

Lo que necesito es graficos de tanques medio futuristas (por decirlo de alguna manera) vistos desde arriba con pequeñas modificaciones, como representando diferentes niveles. Por ejemplo, un tanque con 1 cañon, el mismo tanque con 2 cañones, mas grande, otro color, etc. Diferentes modificaciones para cada nivel.
De estos tanques necesitaria 3 o 4, con o sin modificaciones, yo me encargaria de eso hacer mas, las modificaciones y otras cosas.

Mi idea es hacer un pequeño juego donde tengo diferentes armas (los tanques) que tienen diferentes tipo de tiro, rapido, fuerte, certero, expansivo etc, etc.
Les muestro el que tengo ahora para que vean que es MUY sencillo lo que necesito.

<= esta es la base del tanque
<= esta es la parte del canon en si.

Lo tengo en 2 partes porque lo muevo de forma individual, todos tengo que separarlos en 2 partes.
Como veran, el que tengo ahora es muy sencillo y lo que necesito tambien.

En fin, cualquier cosa me preguntan y lo aclaro.

Desde ya muchas gracias.
Juan Pablo
#5
[Pregunta] OpenGL embebido en GUI creada con xul
Hola a todos!!

Queria preguntar si alguien conoce alguna tecnología o forma de embeber OpenGL en un interfaz gráfica creada con XUL (basado en mozilla) y que la solución o tecnología sea multiplataforma?? (al menos win2 y linux).

La idea es mostrar el resultado del programa en un entorno 3D y que sea posible actualizarlo en el momento. Digo OpenGL porque quiero poder tener una cámara orbital, todo tipo de shapes, etc.

Si alguno conoce la forma de hacer esto o alguna tecnología alternativa que lo haga (y sea multiplataforma) se lo voy a agradecer mucho.

Salu2
Juan Pablo
#6
Hola nuevamente!!

Paso a comentar mi problema lo mas detallado posible.
En un miniframework que tengo (y mantengo) inicio la perspectiva con:
ratio = ( GLfloat )SCREEN_WIDTH / ( GLfloat )SCREEN_HEIGHT;
glViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );

glMatrixMode( GL_PROJECTION );
glLoadIdentity( );

gluPerspective( 45.0, ratio, 0.1, 1024.0 );

glMatrixMode( GL_MODELVIEW );
glLoadIdentity( );

Despues, creo un objeto que no es mas que un cuadrado con textura.
Este lo creo, translado y roto en un mismo lugar:
glPushMatrix();
glTranslatef( _x, _y, _z);

glRotatef( _angleView, 0.0, 0.0, 1.0 );

glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex3f(-30.0,  30.0, 7.5);
glTexCoord2f(0.0, 1.0); glVertex3f(-30.0, -30.0, 7.5);
glTexCoord2f(1.0, 1.0); glVertex3f( 30.0, -30.0, 7.5);
glTexCoord2f(1.0, 0.0); glVertex3f( 30.0,  30.0, 7.5);
glEnd();
glPopMatrix();

Hasta acá (según creo) todo bien. (no?)

Ahora, en el translate tengo que hacer que z (_z) sea -700 para que el objeto se vea, osea para que aparezca en la pantalla.
Eso me trae problemas ya que cuando yo ubico el objeto en la pos x=10 e y=10 y al tener z en -700 queda diferente de la x e y real de la pantalla.
Para que me entiendan les muestro esta captura:



Si se fijan donde esta el puntero del mouse, el objeto y comparan con lo que dice en la consola de abajo (x/ymouse y pj_x/y que son del cuadrado) veran que no coincide.

Mi pregunta es.
Porque tengo que situar mi objeto en -700?? Que hace que mi camara este tan adelante.

Espero que alguno me pueda ayudar.
Gracias de antemano.

Salu2
Juan Pablo
#7
Hola a todos!!

Estoy teniendo problema con las matemáticas.
Tengo claro que tengo que usar seno y coseno pero no logro entender el algoritmo a aplicar para realizar lo que necesito.

Mi problema es sencillo.
Tengo un objeto que tiene que rotar ( glRotatef ) según la X e Y del mouse. Lo que no logro hacer es obtener el ángulo del mouse respecto al objeto.

Buscando por ahí encontré que se hace con la función atan2f. Yo lo tengo implementado así:
_angleMouse = atan2f( x - _x, y - _y )*180;
Esto hace que el objeto gire pero mirando hacia cualquier lado. No corresponde con la posición del mouse.

Lo que busco es obtener el ángulo según X e Y de origen (objeto a girar) y de destino (mouse).
Mi idea es entender esto y no solo solucionar mi problema actual.

Desde ya muchas gracias.

Salu2
Juan Pablo
#8
Hola a todos!!

Estoy teniendo problemas con el tema de la camara y del gluLookAt.
En principio mi problema es que:

Cuando inicio opengl, lo hago así:

GLfloat ratio;
ratio = ( GLfloat )SCREEN_WIDTH / ( GLfloat )SCREEN_HEIGHT;
glViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );

glMatrixMode( GL_PROJECTION );
glLoadIdentity( );

glFrustum(0.0f, 800.0f, 600.f, 0.0f, 1.0f, 60.0f);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity( );


Ahora bien, despues de probar y probar y buscar, no puede hacer que el gluLookAt realizara algun cambio sobre mi escena inicial. Probe cambiando todos los valores, de a 1 y también todos juntos, de a poco y no encontre cambios.

Decidi usar gluPerspective cambiando la linea del glFrustum... a:
gluPerspective( 45.0f, ratio, 1.0f, 100.0f );


Con el cual me surgen 2 errores.
1).- La vista cambio, y se esta viendo completamente mal.
Que quiero decir con que cambio y se ve mal.
Los cubos que creo, los hago así:

glBegin(GL_QUADS);
// Front Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f);// Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f);// Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f( 15.0f,  15.0f, 0.0f);// Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f(-15.0f,  15.0f, 0.0f);// Top Left Of The Texture and Quad
// Back Face
glTexCoord2f(1.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f(-15.0f,  15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f( 15.0f,  15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
// Top Face
glTexCoord2f(0.0f, 1.0f); glVertex3f(-15.0f,  15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f(-15.0f,  15.0f, 0.0f); // Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f( 15.0f,  15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f( 15.0f,  15.0f, 0.0f); // Top Right Of The Texture and Quad
// Bottom Face
glTexCoord2f(1.0f, 1.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
// Right face
glTexCoord2f(1.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f( 15.0f,  15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f( 15.0f,  15.0f, 0.0f); // Top Left Of The Texture and Quad
glTexCoord2f(0.0f, 0.0f); glVertex3f( 15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
// Left Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Left Of The Texture and Quad
glTexCoord2f(1.0f, 0.0f); glVertex3f(-15.0f, -15.0f, 0.0f); // Bottom Right Of The Texture and Quad
glTexCoord2f(1.0f, 1.0f); glVertex3f(-15.0f,  15.0f, 0.0f); // Top Right Of The Texture and Quad
glTexCoord2f(0.0f, 1.0f); glVertex3f(-15.0f,  15.0f, 0.0f); // Top Left Of The Texture and Quad
glEnd();


Primero creo los cubos y despues los muevo a la posicion correcta.
Ahora bien, con frustum este cubo y su translate correspondiente se ve perfecto, pero cuando pongo perspective tengo que hacer que el Z de cada cubo sea por lo menos de -45.0 (contra -1.0 que uso con frustum) para que se vea decente (ni siquiera bien).


2).- El gluLookAt tampoco realiza ningun cambio sobre la escena con perspective.
Al igual que con frustum y con casi las mismas pruebas.


En fin, esos son mis 2 problemas comenzando con mayor importancia el problema con la perspective.
Búsque en google, en este foro y demas y no pude encontrar la solucion a mi problema.

Si alguno me puede ayudar se lo voy a agradecer.

Desde ya muchas gracias.

Salu2
Juan Pablo
#9
Hola a todos!!

Estoy encarando un juego que la vista principal es desde arriba.
Como soy programador me llevo bastante mal con el photoshop y otras herramientas de diseño así que quería saber si alguno de ustedes conoce alguna pagina donde se puedan descargar gráficos de objetos vistos desde arriba.
Necesito objetos para construir escenarios; sillas, mesas, casas, autos, arboles, etc etc.

Mejor aún seria conseguir objetos para renderizar (en blender, 3dmax, etc) ya que tengo pensado también que en algún momento (aún no definido) del juego se pueda cambiar la camara.

Estuve buscando pero no encontré ninguna galería, solo imágenes sueltas por ahí. La idea principal es que sea todo uniforme, creado por la misma persona o muy similar en diseño y yo lo modifico para que no quede igual.

Espero que se entienda lo que necesito.
Desde ya muchas gracias.

Salu2
Juan Pablo
#10
General Grafistas / Galeria de graficos... ?
28 de Abril de 2008, 10:21:34 PM
Hola a todos!!

Ando necesitando una galería de gráficos de juegos de estrategia. Si existe alguna en 3D mejor, pero en principio busco en 2D para yo después pasarlo a 3D ( o al menos intentarlo).

Lo que necesito son gráficos de unidades de construcciones de ataque (tipo ametralladoras con base, lanzamisiles, antiaereos, etc),  vistas desde arriba o isométricas.

Si alguno conoce o tiene imágenes de este tipo que pueda pasarme se lo agradecería mucho. La idea es hacer las mías propias así no se parece a nada que hizo nadie jeje.

Salu2 y gracias
Juan Pablo
#11
Hola!!

Recien estoy empezando con opengl y leyendo los tutoriales de nehe no me quedo claro el tema de la multitextura.
Mi objetivo es hacer un cubo y solo en la cara frontal ponerle textura. En el resto de las caras iria solo un color.
Si alguien me puede explicar algo sobre multitextura o textura-color se lo voy a agradecer.

Salu2 y gracias
Juan Pablo
#12
HOla a todos!!

Estoy teniendo problemas con opengl+sdl (entre otros) con las texturas.
Estoy recién empezando con opengl+sdl y quiero poner un PNG como textura.
Ahora bien, ese PNG tiene una imagen y el resto es transparencia (según GIMP).
Cuando cargo la textura se me ve lo que seria la transparencia como un color.

Acá van los pedazos de código:
Inicio OpenGL + SDL:
glViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );

glEnable( GL_TEXTURE_2D );
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glDepthFunc(GL_LESS);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);

glMatrixMode( GL_PROJECTION );
glLoadIdentity();

glMatrixMode( GL_MODELVIEW );


Carga de la textura:
GLuint loadTexture_gl(SDL_Surface *surface){
  GLuint texture;
  GLint  nOfColors;
  GLenum texture_format;

nOfColors = surface->format->BytesPerPixel;
if (nOfColors == 4)
{
if (surface->format->Rmask == 0x000000ff)
texture_format = GL_RGBA;
else
texture_format = GL_BGRA;
} else if (nOfColors == 3)
{
if (surface->format->Rmask == 0x000000ff)
texture_format = GL_RGB;
else
texture_format = GL_BGR;
} else {
printf("warning: the image is not truecolor..  this will probably break\n");
}

glGenTextures( 1, &texture );
glBindTexture( GL_TEXTURE_2D, texture );

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexImage2D( GL_TEXTURE_2D, 0, nOfColors, surface->w, surface->h, 0, texture_format, GL_UNSIGNED_BYTE, surface->pixels );
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
  return texture;
}


Objecto y aplicado de textura:
glBindTexture( GL_TEXTURE_2D, sTexture1 );
glBegin( GL_QUADS );
glTexCoord2i( 0, 0 );
glVertex3f( 100, 100, 0 );

// Bottom-left vertex (corner)
glTexCoord2i( 1, 0 );
glVertex3f( 228, 100, 0 );

// Bottom-right vertex (corner)
glTexCoord2i( 1, 1 );
glVertex3f( 228, 228, 0 );

// Top-right vertex (corner)
glTexCoord2i( 0, 1 );
glVertex3f( 100, 228, 0 );

glEnd();


Para muchos es una pregunta estúpida pero la estoy haciendo después de buscar por todos lados tutoriales/manuales/documentos o lo que sea acerca de OpenGL con SDL y no encontrar, y después de probar muchas cosas de otros tutoriales de opengl (como los de nehe) y no terminar de entender todo..
Si alguien tiene para darme algún manual interesante/completo sobre estas 2 librerias en conjunto o de opengl explicado a fondo se lo voy a agradecer mucho y no molestaría más con mis preguntas.

Salu2 y gracias desde ya.
Juan Pablo
#13
Hola a todos!!

Mi pregunta es si conoce alguien algun algoritmo para hacer transformaciones tales como rotacion, tamaño, etc en 2D solo utilizando SDL.
Mejor aun si lo que conocen esta en C++. Encontre SDL_gfx pero me gustaria no depender de una libreria para esos efectos.

En mi proyecto no uso OpenGL ni nada mas que SDL y no encontre como hacer rotacion ni cambio de tamaño a una surface.

Tambien quisiera hacer SDLRect triangulares (varios puntos en diferentes  coordenadas) sobre 1 sola surface. Osea, por ejemplo imitar el efecto de rotura de cristales.

Por otro lado, quisiera hacer un efecto como el de este juego de XBOX cuando cae una pieza. Esa estela que deja la pieza cuando va callendo.

Si alguien me da una mano se lo voy a agradecer mucho.

Salu2 y gracias
Juan Pablo
#14
Hola a todos!!

Espero que esto esta en la seccion correcta

Necesito graficos sencillos o guia/idea (para crearlos yo mismo) para un pequelo game tipo tetris (parecido).

Lo que necesito es idea para los fondos ya que esta RE pobre por ahora.

Les adjunto unos screens de lo que quiero cambiar despues los comento.










Bueno, en primer lugar esta el menu, que si alguno tiene alguna sugerencia o imagen para hacerme se lo agradezco, pero no es lo que me interesa ahora. (las coordenadas del mouse vuelan de ahi, obvio jeje)

Lo mas importante es el fondo durante el juego, ya que el que tiene ahora lo hice yo asi nomas, copiando gran parte de uno hecho y aplicandole 2 efectos en el photoshop, y no me termina de agradar.
Por si les sirve, en la primera screen muestra el juego asi nomas, en la segunda muestra el efecto de cuando un bloque choca y se estaciona, que es como si se achicara y despues vuelve a su forma, y en la 3ra mustra cuando los bloques desaparecen, que se desvanecen muy rapidamente porque no encontre otro efecto para hacerle.

La idea es que el fondo, ademas de tener las medidas (del interior, donde corren los bloques) tenga un pequeño (o no) espacio para poner el tiempo, el puntaje y el nivel.
Les pongo tambien, el fondo limpio por si les sirve de base o de algo =S

Por otro lado, el cursor.
La ultima imagen.
Esa cosa blanca que se ve que cubre a 2 bloques al vez que es pesimo y esta hecho sin gana alguna.

Bueno, espero que alguno pueda ayudarme. No pido la gran cosa, creo que a un buen diseñador/grafista le tomaria MUY poco tiempo hacerme unos hermosos fondos o tirarme hermosas ideas de la forma mas cercana a una imagen y yo, se lo agradeceria muchisimo.

Salu2
Juan Pablo
#15
HOla a todos!!

Mi nombre es JuanPablo y soy nuevo en el foro pese a que lo conozco desde hace años.

Mi problema es el siguiente:
Tengo un pequeño proyecto de un juego en el cual arme clases para hacer lo que seria el engine donde tengo una clase cEngine que lo que hace (entre otras cosas) es iniciar el SDL, cargar imagenes, las muestra, etc.

El tema es que, cuando inicio el SDL creo una surface de buffer que la voy a usar para despues pegarla en la pantalla así:
[Todo lo que quiera mostrar] --> [surface de buffer] --> [surface principal]
La superficie la creo de esta manera:

sBuffDisplay = SDL_CreateRGBSurface(SDL_HWSURFACE, SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, 0x00000000, 0x00000000, 0x00000000, 0x000000ff);

Por otra parte, tengo un método que lo que hace es mostrar la imagen que le paso como surface, el método es este:

void cEngine::apply_surface( int x, int y, SDL_Surface *source){
  SDL_Rect offset;

  offset.x = x;
  offset.y = y;
  offset.h = source->h;
  offset.w = source->w;

  SDL_BlitSurface( source, NULL, sBuffDisplay, &offset );
}


Este es el mas sencillo, ya que tengo otros que aceptan otros parametros:

void apply_surface( int x, int y, SDL_Surface *source);
void apply_surface( int x, int y, SDL_Surface *source, int px, int py, int ph, int pw);
void apply_surface( int x, int y, SDL_Surface *source, SDL_Rect srcRect);
void apply_surface( SDL_Surface *source, SDL_Rect srcRect, SDL_Rect dstRect);


Ahora bien, desde la clase principal cGame (del archivo game.cpp y game.h) creo el objeto del engine (el objeto cGame lo creo en el main de la aplicación):

cEngine engine;

y mas adelante lo uso para mostrar una imagen:

engine.apply_surface( 0, 0, sBackground);

Esto funciona perfectamente mostrando la imagen como corresponde.
Ahora si yo hago esto mismo que hice en la clase cGame desde otra clase (cMouse, cMenuItem, etc) no muestra la imagen pero tampoco tira error.
Estoy un poco mariado en cuanto a que porque se puede deber ya que el método que muestra la imagen (apply_surface) es uno solo, y el render, flip y el clear también se hace por medio de la clase cEngine.

No tengo problemas con el parpadeo, ni con ninguna otra cosa, solo esto que me surgió a raíz de que empecé a acomodar el engine ahora que tengo el juego en una versión bastante estable con menú y todo eso; me faltan algunas cosas para hacer pero el juego en si esta bastante terminado.

Por otro lado, me queda la duda si eso de crear una surface de buffer es correcto para usar el doblebuffer o el SDL lo hace automaticamente?

También me gustaría un poco de info (ya que busque y no encontré lo que necesitaba) acerca de OpenGL para hacer los blits ya que, según leí es mejor, mas rápido y no es difícil. Si alguien tiene y puede pasarme una mini-guia para hacer algo básico como crear un cuadrado, ponerle la textura (imagen) y mostrarlo estaría re agradecido.

Espero que alguien me entienda y me pueda dar una respuesta.

Salu2
JuanPablo





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.