Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿alguna Librería De Entrada?

Iniciado por marcode, 30 de Abril de 2006, 05:46:34 PM

« anterior - próximo »

marcode

 ¿Conocéis alguna librería gratuita similar a Direct Input?. No hace falta que sea tan avanzada.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

Unknow Player

 Si quieres una simple puedes usar glut mismamente  :)  

marcode

 Me interesa fundamentalmente que no esté basado en eventos, si no que pueda leer directamente de los puertos.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

_Grey

 No creo que puedas leer directamente de los puertos en Win32.

Quiza te sirvan GetKeyboardState() o GetKeyState().

Saludos.

Vicente

 Pues yo no tengo ni idea, pero si que creo que se puede leer la información de los puertos... En codeproject hay dos proyectos que lo hacen. Ni idea de como, pero lo hacen :P

Artículo 1
Artículo 2

Un saludo!

Vicente

seryu

 Pues lo normal hoy día nos guste o no es trabajar con eventos, aunque tu luego te puedes hacer tus estructuras que vayan actualizando los datos de input para que el programa pueda preguntar directamente el estado de una tecla..

Directinput es bastante sencilla, pero si no quieres utilizarla tienes otras posibilidades como:

OpenGLUT, con ejemplos. ( Existe tambien freeglut, que se supone que es una version mas fiel al glut original, pero open source )

http://openglut.sourceforge.net/

SDL, tiene una parte de input.

http://www.libsdl.org


Y en google encontraras miles de wrappers de directinput.

vicho

 SDL ofrece los dos tipos. preguntarle directamente los estados del teclado y mouse, como tambien el hecho de tener los eventos ;)

SDL_GetKeyState para los del teclado
y
SDL_GetMouseState para los del mouse

por lo cual te recomiendo usar SDL(no es por que yo programe usando SDL digo yo... xD)

marcode

 Gracias a todos por las respuestas, tendré en cuenta todas las posibilidades, aunque de momento me conformaría con el GetKeyState() que ha comentado seryu y con una función similar pero para el ratón.

¿Hay alguna forma de obtener los desplazamientos relativos del ratón independientemente del cursor?, cuando el cursor toca el borde de la pantalla, la ventana deja de recibir eventos de posición, por lo que se detiene, podría situar el cursor en el extremo opuesto, pero me parece un poco cutre.

Si quería algo similar a DirectInput es porque ya lo he usado y es perfecto, porque no se depende del cursor de la ventana, si no que se obtienen los datos directamente del ratón, pero como ahora estoy usando OpenGL quería evitar el tener que depender del DirectX si pudiera.

Por cierto, programas antiguos de ms-dos en los que usé inportb para el teclado y geninterrupt para el ratón y joystick funcionan perfectamente en la consola (no se queja windows). Tras consultarlos para win32 al parecer inportb ha sido "deprecated" y geninterrupt queda relegado para uso en drivers.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

seryu

 En SDL puedes configurar la forma de leer los datos del mouse para que te los de en relativo tal como tu necesitas.

Por otro lado, si vas a programar en Windows, es perfectamente normal utilizar OpenGL de render y directinput o cualquier otra parte de directx, muchos programas lo hacen y me parece buena solucion. SDL de hecho es al fin y al cabo un wrapper de directx en windows.

A menos que tengas interes en compilar en varias plataformas o sistemas operativos, directx es lo mejor para windows. Direct3d es solo una parte, y tu puedes utilizar la que necesites, en este caso directinput.

_Grey

 
Citar
¿Hay alguna forma de obtener los desplazamientos relativos del ratón independientemente del cursor?

Si no usas directX, y SDL creo que por debajo usa DirectX, corregirme si no. No, no se puede, deberas leer la posicion y contraatarla con la anterior, en este post hablo un poco del tema, es un post medio Linux medio Win, pero lo deja claro.
Si quieres incrementos sin mas, Direct Input.

Saludos.

marcode

 Parece claro que lo mejor al final será usar DirectInput.

Lo de usar GetCursorPos + el desplazamiento del cursor al centro de la pantalla puede ser una buena solución pero me surge otro posible problema, si alguien tiene configurada la aceleración del cursor (no la velocidad) demasiado alta, esto podría suponer fastidiar el manejo de ciertos juegos.

Lo curioso es que mi Arkanoid en MsDos accede bajo windows al puerto del teclado, y al ratón mediante una interrupción (por no hablar de los registros de la vga) tan fresco.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

seryu

 En teoría debería hacerlo via simulación (oh, bueno, es windows, no un s.o. de verdad...).

Precisamente el abstraerse de la máquina es la intención de los sistemas operativos modernos. Como siempre, en papel suena muy bien pero luego, a veces uno desearía poder enganchar en un IRQ o apuntar a una direccion de la vga directamente y olvidarse de APIs ofuscadas..  :P

Mira el lado bueno, por raro que sea el mouse y sus drivers, funcionaran con tu juego  ;)

Bueno, eso es otra vez según la bonita teoría  :P  






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.