|
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.
Mensajes - Ruben3d
Páginas: 1 2 [3] 4 5 ... 30
51
« en: Domingo 15 de Enero de 2006, 17:21 »
Hola.
En mi opinión tienes un error en el planteamiento de tu aplicación. OpenGL es un API pensado para aplicaciones en tiempo real o, en otras palabras, aplicaciones que están continuamente iterando y refrescando la salida por pantalla. El efecto que deseas se conseguiría pintando o no pintando cada gráfica en cada iteración (que sería del orden de más de 24 veces por segundo). Puesto que el tiempo de cálculo de cada gráfica es muy alto lo que has de hacer es tener las coordenadas resultantes cacheadas y evitar así la aplicación del algoritmo complejo en cada iteración. De esta forma el efecto de capas lo consigues activando o desactivando la rutina que se encargue del pintado de cada gráfica.
Un saludo,
Ruben3d
52
« en: Domingo 15 de Enero de 2006, 17:11 »
Hola.
Para detectar colisiones de manera eficiente entre entidades en una escena se suele emplear una sencilla aproximación: A cada objeto complejo se le asigna un Bounding Volume (un objeto sencillo que lo representa a efectos de comprobaciones de colisiones). Lo más común es que se trate de un cilindro, una caja o una esfera. Luego no tienes más que comprobar intersecciones entre estos objetos sencillos y tomar las medidas necesarias en caso de colisión (en tu ejemplo, sería mover conjuntamente el objeto con la mano como si en verdad lo hubiera cogido).
Si quieres aproximaciones físicamente realistas tienes que emplear algún motor de física, como pudiera ser ODE, pero requiere bastantes ciclos de reloj con modelos complejos pues el cálculo se realiza a nivel polígono, no con aproximaciones. Un ejemplo de juego que emplee esta técnica es Doom 3.
Un saludo,
Ruben3d
53
« en: Viernes 6 de Enero de 2006, 16:41 »
Bueno, parece que esta discusión ya se ha desviado bastante del tema inicial, así que paso a cerrarla.
Si hay gente interesada en crear un motor 3d, sea para la plataforma que sea, que se sienta libre de iniciar una nueva discusión (utilizando la definición de discusión para bien, no para degenerar como aqui sucedió).
Un saludo,
Ruben3d
54
« en: Viernes 6 de Enero de 2006, 16:33 »
Hola.
OpenGL-SDL es exactamente la misma implementación que OpenGL puro. La diferencia radica en que SDL es una librería que proporciona un recubrimiento independiente de plataforma a la lectura de eventos de entrada y gestión del modo gráfico, así como muchísimas facilidades de pintado de gráficos 2D y audio. Internamente, realiza exactamente las mismas llamadas al API de OpenGL que podrías hacer tú si no la estuvieras utilizando.
Espero que ésto haya despejado un poco tus dudas.
Un saludo,
ruben3d
55
« en: Viernes 6 de Enero de 2006, 16:23 »
Hola. Para conseguir el efecto que buscas (rotar un objeto delante de la cámara) has de utilizar las siguientes llamadas en el mismo orden: glLoadIdentity(); // 1 glTranslatef(0.0f, 0.0f, distancia); // 2 glRotatef(...); // 3
La llamada (1) va a resetear la matriz de transformación actual (asegurate de que sea la MODELVIEW), que se habría de hacer, como poco, al inicio de cada pintado de escena por fotograma (intuyo que ésto no lo estás haciendo). Si no se realiza esta llamada todas las transformaciones que vayas aplicando se irán acumulando en la matriz de transformación. La llamada (2) es la que va a alejar el objeto del centro de coordenadas (posición de la cámara) según lo indicado en distancia. Y ya por último, una o más llamadas (3) harán que el objeto rote sobre sí mismo. Espero que te haya servido de ayuda. Un saludo, ruben3d
56
« en: Jueves 15 de Septiembre de 2005, 16:47 »
Hola.
No he usado el algoritmo DDA nunca para trazar líneas. Para ello, empleo el de Bresenham. De todas formas, OpenGL te ofrece la posibilidad de trazar líneas, así que no veo por qué quieres implementarlo tú mismo.
Un saludo,
Ruben3d
57
« en: Domingo 5 de Junio de 2005, 21:47 »
Hola.
Una matización para los dos casos (STL de C++ y ANSI C). Cuidado cuando copies un vector de punteros. Piensa si en verdad quieres copiar sólo el puntero o también el elemento al que está apuntando.
Un saludo.
Ruben3d
58
« en: Domingo 5 de Junio de 2005, 20:24 »
Hola.
Para concretar un poco más, ¿qué problema tienes exactamente? ¿No sabes leer los eventos del ratón? ¿No sabes calcular cuánto se ha desplazado? ¿No sabes cómo mover la escena en función de lo que se haya movido el ratón?
Un saludo.
Ruben3d
59
« en: Jueves 2 de Junio de 2005, 13:47 »
Hola. En C tienes la función strtok(), que permite ir partiendo una cadena de texto estableciendo los caracteres que quieras como delimitadores de cada fragmento (lo que tú pides). Un saludo. Ruben3d
60
« en: Jueves 2 de Junio de 2005, 13:42 »
Hola. Para explorar el contenido de un directorio en Windows has de usar estas funciones: FindFirstFile()FindNextFile()Un saludo. Ruben3d
61
« en: Viernes 27 de Mayo de 2005, 20:39 »
Hola. Yo estoy utilizando ahora mi propia librería gráfica en la que creo un backfuffer para pintar, con una resolución de 240x320x16 bits, con lo que ocupa bastante más de los 64 Kb (153600 bytes), y no tengo ningún problema con un compilador de 32 bits bajo Windows: m_nPixels = m_nWidth * m_nHeight; m_nBufferSize = m_nPixels * (m_nBPP / 8); // A comer memoria: 240*320*2 = 153600 bytes. Es totalmente necesario para evitar flickering. m_pBackBuffer = new WORD[m_nPixels];
Espero que te sirva de ayuda. Un saludo. Ruben3d
62
« en: Jueves 26 de Mayo de 2005, 21:19 »
Gracias por tu contribución
63
« en: Sábado 21 de Mayo de 2005, 16:54 »
Hola.
He observado que algunos programas que te modifican el ratón ocasionan ese efecto sobre ventanas con OpenGL (programas al estilo CursorXP). Por otro lado, ayudaría que postearas el código exacto de la inicialización, ya que un pequeño cambio en algún punto puede ocasionar ese tipo de efectos.
Un saludo.
Ruben3d
64
« en: Sábado 21 de Mayo de 2005, 16:45 »
Hola.
Hacer un programa que comprima archivos con un algoritmo sencillo no es muy difícil. Tengo hecha una implementantación de la compresión RLE (run-length encoding) y es bastante pequeña, sin implicar conocimientos profundos. Busca sobre este tema y encontrarás más información.
Un saludo.
Ruben3d
65
« en: Viernes 20 de Mayo de 2005, 00:31 »
Hola.
No sé cómo gestiona OpenGL la existencia de múltiples ventanas, pero si las trata como múltiples Viewports está claro que va a compartir toda la configuración. Me temo que la única manera de cambiar lo que dices es configurar como quieras cada una de las ventanas cada vez que las pintes.
Un saludo.
Ruben3d
66
« en: Viernes 20 de Mayo de 2005, 00:28 »
Hola.
La verdad es que no me ha pasado ésto nunca. ¿Cuándo pintas la pantalla, en un bucle iterativo o al recibir un WM_PAINT en la ventana? ¿Qué código utilizas para inicializar OpenGL?
Un saludo.
Ruben3d
67
« en: Viernes 20 de Mayo de 2005, 00:26 »
Hola. Los pasos para crear una ventana para OpenGL en Windows son: - Registrar una clase de ventana.</li>
- Crear una ventana de esa clase.</li>
- Conseguir el contexto del dispositivo.</li>
- Conseguir el contexto de render.</li>
Está claro que el último paso te está fallando. Postea todo el código que utilizas para la inicialización y le echaré un ojo (recuerda usar las etiquetas CODE y /CODE para que aparezca formateado). Un saludo. Ruben3d
68
« en: Jueves 19 de Mayo de 2005, 00:23 »
Hola.
Si desarrollas para sistemas basados en Windows CE (Windows Mobile 2003, aka Pocket PC 2003) puedes desarrollar con C++ nativo usando el Platform SDK, con el Microsoft eMbedded Visual C++ 4.0 (gratuito). También tienes a tu disposición cualquier lenguaje de la plataforma .NET, ya que incorpora el .NET Compact Framework, y puede ser desarrollado con Visual Studio 2003 y 2005.
Un saludo.
Ruben3d
69
« en: Martes 17 de Mayo de 2005, 14:41 »
encontrar alguna informacion sobre openal En el SDK te viene información y un par de ejemplos muy buenos: Uno de ellos con una sencilla escena en 3D, con fuentes de sonido en movimiento y oclusiones. El otro es una ejemplo para consola que te muestra cómo reproducir y realizar varios efectos de diferentes tipos a través de un menú. Un saludo. Ruben3d
70
« en: Lunes 16 de Mayo de 2005, 14:33 »
Hola. Si lo que quieres es un IDE al más puro estilo Turbo C, en modo consola, prueba Rhide: http://www.rhide.comUn saludo. Ruben3d
71
« en: Domingo 15 de Mayo de 2005, 22:32 »
Para mi el mejor es KDE. Es altamente personalizable, es más rápido que el de Windows, ofrece muchas más opciones que Gnome, y me da buen feeling al usarlo.
72
« en: Domingo 15 de Mayo de 2005, 19:20 »
Hola.
DirectX no es una librería, sino un conjunto de ellas dedicadas a diferentes campos que ya has mencionado. El equivalente de OpenGL, que sólo es para gráficos, es DirectGraphics. Existe un equivalente a DirectSound, llamado OpenAL, cuyo API sigue la misma estructura que el de OpenGL y se maneja de manera similar. Tiene soporte para sonidos 3D, efectos de oclusión, mediante EAX, y bastantes cosillas.
Respecto a cuál elegir, depende del uso. Si la aplicación va a ser multiplataforma quedate con la combinación OpenGL+OpenAL. Si es sólo para Windows ya elige en función de tus gustos personales. De todas formas, en Windows puedes hacer todo tipo de combinaciones: Pintar usando OpenGL, sonidos con DirectSound, eventos desde el API de Windows, etc.
Un saludo.
Ruben3d
73
« en: Jueves 12 de Mayo de 2005, 00:31 »
Si ves que Irrlicht no te agrada mucho puedes probar Ogre, que está muy completo y tiene bastante buena crítica. Un saludo. Ruben3d
74
« en: Jueves 12 de Mayo de 2005, 00:23 »
¿Se puede trabajar directamente en opengl sin usar glut u otras librerias por el estilo? Así es. Tienes que usar funciones del sistema operativo para conseguir un contexto de render para OpenGL, leer los eventos del teclado y ratón, etc. Si quieres un ejemplo de ésto para Linux, al final de esta página hay dos, uno sin usar librerías adicionales y otro con SDL: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=02Un saludo. Ruben3d
75
« en: Viernes 6 de Mayo de 2005, 00:13 »
Vi lo del Mesa en la pagina de opengl pero no entendi si es un engine o una libreria.... Mesa es una implementación por sofware de la especificación de OpenGL. ¿Qué quiere decir ésto? Pues que tienes a tu disposición todo el API de OpenGL, pero se va a pintar de la manera tradicional, procesando todo desde la librería a base de procesador, sin usar la tarjeta gráfica. Ésto hace que sea bastante más lenta, pero permite hacer aplicaciones 3D sin hardware que lo soporte o sin los drivers. Creo que viene por defecto instlada en varias distros. En concreto, en Fedora está y es sustituida por la de nVidia si instalas los drivers oficiales. Si no te viene un SDK con la distro, la verdad no sé dónde descargarlo, porque no he tocado nada de este tema bajo Linux. Un saludo. Ruben3d
Páginas: 1 2 [3] 4 5 ... 30
|
|
|