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

#41
Estoy  intentando optimizar mi render de meshes así que he decidido usar algun tipo de buffer con todo indexado.

Ahora mismo mi clase mesh tiene un array con todos los vertices, otro con todas las normales y luego uno que dice cada cara qué vertices tiene y qué normales.

He probado usando Vertex Arrays pero he descubierto que los vertex arrays obligan a que haya el mismo numero de vertices que de normales (corregidme si me equivoco), lo que significa que tengo que replicar datos, lo que para mi es una chapuza.

A mi me gustaría pasarle a opengl el array de vertices, de normales y despues uno en el que estan los indices para que los vaya sacando de los arrays. Es eso posible?

He estado mirando los VBOs pero por lo que veo la unica diferencia es que en lugar de enviar los arrays en cada iteración se suben y se dejan en memoria, con lo cual te ahorras esa transferencia cada vez. Tienen alguna mejora adicional?

¿Hay más alternativas que esten suficientemente extendidas?

Gracias.
#42
Estoy planteandome añadirle soporte para meshes a mi framework (aunque inicialmente iba dirigido al 2D). La cuestión es que entre tanto formato se hace dificil decantarse por uno.

Supongo que debería elegir el formato que sea más compatible con el programa que pretenda usar para modelar pero por el momento no tengo muy claro cual usar, me encanta Sketch Up para diseñar entornos pero es muy basico y no permite texturizar en serio. Me gustaba milkshape para cosas sencillas, los demás son demasiado pesados para un coder como yo.

En fin, mi pregunta es cual es el formato más compatible entre programas, más comodo de leer, y que tenga las features más elementales. Yo como coder que soy me interesa que guarde la UV y la Normal de cada vertice, que puedas tener diferentes materiales (muy básicos, textura, color, emisive, y poco más), que no tenga que estar navegando entre chunks de basura que no necesito para nada.

Gracias.
#43
Estoy desarrollando un framework pero uso muchas librerias estáticas de terceros (como SDL, DevIL, Glew, PThreads, etc) y es un palo para los desarrolladores tener que poner la lista de librerias a la hora de linkar.

Existe alguna manera de coger varias librerias y mezclarlas en una sola? (tecnicamente no debería haber problema salvo que hubiesen colisiones entre ellas, no?)

Gracias
#44
General Programadores / Templates y forzar los casts
15 de Septiembre de 2006, 01:46:42 AM
Resulta que tengo un template VECTOR3 (lo uso para guardar puntos) que tiene como parametro el tipo de datos, uso floats generalmente pero en algunos casos necesito double. El problema es que algunas funciones necesitan mucha precisión en los points así que usan double.

Tengo definidos dos tipos:
typedef VECTOR3<float> point;
typedef VECTOR3<double> pointD;


El problema es que si una función espera un point y recibe un pointD me peta, el sistema no sabe hacer el cast de uno a otro.

Alguien puede echarme una mano? he probado esto:

point& operator = (point& p, pointD& pd)


pero no funciona.

Otro problema es que algunas funciones reciben un const point& p, si le paso un pointD puedo hacer que el sistema fuerce un cast?

Gracias
#45
General / Planet Stratos y el blog de Josepho
03 de Septiembre de 2006, 11:38:26 PM
Espero que nadie se me eche encima por decir esto pero no creeis que el blog de josepho debería ser borrado de la lista? No es que me desagrade es solo que de cada 10 post 1 es sobre gamedev o aporta algo util a la comunidad y el resto son los tipicos post internet junk, es decir, videos, fotos, etc.

Y para colmo salen integros en la web y no resumidos como el resto, como ya he dicho no tengo nada en contra de él pero me parece que rompe un poco la web y dado que es una iniciativa en la que creo completamente pues tenía que decirlo.
#46
Al ejecutar me da el error de que no encuentra las DLLs de las librerias que uso, las cuales estan en una carpeta todas juntas. Pero es que esa carpeta está en el path del sistema y en los directorios del VC++ Executables (que supongo que es el que usa para los binarios).

Total, que si ejecuto desde el explorador o desde prompt no hay problema, pero si ejecuto desde el visual no encuentra las librerias.

Alguna sugerencia?
#47
Estoy buscando una librería de threads que sea multiplataforma y que permita priorización. Me interesa que al crear el thread pueda decirle que sea de prioridad baja y que dicho proceso consuma muy poca CPU para que no me colapse el main loop de la aplicación.

Ahora mismo estoy usando PTHREADS pero no encuentro esa opción. Si alguien sabe de alguna buena librería que cumpla estos requisitos se lo agradeceré.
#48
Programación gráfica / Shaders Por Defecto
22 de Mayo de 2006, 06:03:59 PM
 Llevo un tiempo trasteando con los shaders en GLSL y un problema que me encuentro es que los shaders que yo programo deben reemplazar a los ya existentes, pero yo desconozco todo lo que hacen los existentes por lo que me temo que me olvido de controlar algunas variables y el resultado de mis shaders podria ser erroneo en determinadas condiciones.

Mi pregunta es si existe alguna manera de copiar a mi Program los shaders que hay en el program 0 (el program por defecto) para que mi shader se aplique al resultado habitual de opengl.

Otra opción es que alguien me diga si existe algun lugar donde este el codigo GLSL de los shaders que trae opengl por defecto.

Gracias.
#49
 Para mi proyecto final de carrera necesito tener del orden de una giga en texturas, obviamente no se mostraran todas a la vez sino que las irá cargando conforme se necesiten (es algo rollo google earth).
Como no quiero tener miles de archivos he pensado en meterlo todo en un unico archivo y dejar tablas para localizar facilmente esos archivos dentro de él. No me interesa demasiado que esté comprimido ya que todo seran texturas ya comprimidas así que disponer de algo rollo zip no me ahorra espacio y seguramente me añada coste computacional.

Necesito alguna librería o algoritmo que me pertima facilmente guardar y leer de un archivo gigante, desde mi aplicacion.

Alguna idea de por donde empezar?
#50
Programación gráfica / Forzar El Uso De Midmaps
16 de Abril de 2006, 10:54:31 AM
 Me gustaría renderizar un quad con una textura que tengo cargada en memoria pero quiero que use alguno de los niveles de midmap previamente creados por el API al subir la textura, el motivo es hacer un efecto de blur lo más warro posible. Existe alguna manera?
#51
General Programadores / Namespaces, Enums Y Tipos Propios
13 de Abril de 2006, 04:08:38 PM
 Resulta que para el sistema GUI de mi engine necesito tener muchas constantes propias (no se si este es el nombre adecuado), me refiero a palabras que para el engine significan algo, cosas como Top, Bottom, Left, Right, BorderColor, etc. La cuestión es que tengo muchisimos así que me interesa tenerlos catalogados (no quiero tener un archivo con un enum gigante con todo dentro).

Lo que quiero es que si una función solo puede recibir Positions (p.e. StickTo(Position::Top) ) pues el programador esté obligado a pasarle un Position (es decir, Top, Left, ... ) y no otra cosa.

He probado con enums pero el problema de los enums es que se convierten en globales colisionando entre ellos (ya que puede que Position tenga un valor None y BackgroundType tenga otro None. Además con enums no puedo prevenir que el programador le pase un tipo que no tiene nada que ver.

¿Cómo lo puedo hacer exactamente? Es posible?

Me interesa que sea mediante enums porque no quiero tener que definir manualmente el valor numerico de cada palabra.

Gracias de antemano.
#52
 Hasta hace nada usaba SDL_image para gestionar las cargas de texturas para mi framework pero desde hace unos dias dicha libreria no funciona en mi ordenador. El caso merecería un thread aparte porque es muy extraño ya que ni los backups de antiguos ejecutables que a otros sí les van me van a mi, deduzco que debido a alguna tonteria de mi windows ahora ya no le gusta la librería dinamica que usaba SDL_image.

Así que me he decidido a reemplazar SDL_image por algo más al uso ya que mediante SDL_image tengo que cargar la imagen en una surface y luego leer su contenido y eso no es lo que yo quiero, prefiero leer directamente de la memoria donde carga la imagen. Además SDL_image no permite guardar, solo leer de formatos como PNG.

He pensado en usar directamente libpng que es la librería que usa SDL_image pero me encuentro con una librería demasiado oldschool, nada user friendly, y no quiero perder tiempo en eso.

Qué librería me recomendais? necesito que soporte PNGs ya que necesito capas alpha y compresión lossless.

Gracias
#53
 A ver quien me echa un cable con esta estupidez:

Tengo una aplicacion que funcionaba perfectamente hasta que se me ocurrió separar lo que era aplicación de lo que es framework para meter este ultimo en una librería estática(.lib). Mi aplicacion linka contra ella y todo va bien salvo una cosa. Resulta que yo tengo una clase singleton que viene a ser un Factory encargada de contener "loaders" para los diferentes formatos. Esta clase ademas tiene una clase abstractar que sirve de interfaz para todos los loaders los cuales heredan de ella.

Tengo algunos loaders implementados y cuando mi aplicacion pide un archivo la factory mira que loader puede cargarlo y lo invoca.
Para indexar los loaders en el factory lo que hacía es simplemente tener una variable global del tipo del loader en el archivo que lo implementaba, de manera que al ejecutar se instanciaba automaticamente le loader y este desde el constructor se registraba en el factory.

Pero ahora al separar framework de aplicacion resulta que como esas variables no son invocadas desde mi aplicacion entonces al linkar no las considera utiles, no las incluye en mi ejecutable y por lo tanto no se instancian ni se registran por lo que no tengo loaders.

Una warrada que hice es llamar los loaders a mano desde mi aplicacion y entonces si que los añade y funciona.

Alguna idea para arreglar esto? algun consejo de programador experimentado?

Gracias

#54
General Programadores / No Me Deja Debugar Un Constructor
04 de Febrero de 2006, 05:10:08 PM
 Resulta que si mientras estoy debugando linea a linea llego a un NEW a una clase mía y le digo que entre dentro entonces me salta con que no encuentra el código fuente. Antiguamente si hacía eso entraba primero en el código del operador NEW para desde ahí poder yo dar el salto al constructor de mi clase pero ahora ya no me deja, tengo que poner un breakpoint en el constructor y ejecutar hasta que salta ahí, lo cual es muy engorroso.

Alguien sabe a qué puede ser debido? nunca me había pasado, creo que puede ser que no encuentra los sources de la plataforma de windows pero no entiendo qué ha podido cambiar para que no los encuentre, las variables globales parecen correctas.

Tambien me he fijado que aparece una ruta dentro de la DLL a la que puedo entra en modo disassembly que es "f:\vs70builds\3077\vc\crtbld\crt\src\newop.cpp" que no tiene nada que ver con mi ordenador, deduzco que es la original de los desarrolladores de Visual Studio, no creo que esté buscando ahí las fuentes, no?

En fin, si alguien sabe algo lo agradeceré.
#55
General Programadores / Programar Juegos En Php
09 de Enero de 2006, 01:01:21 AM
 Ultimamente me ha picado un poco el tema de programar juegos online en PHP pero me está resultando más costoso de lo que pensaba.

Mi principal problema es que parto del esquema clásico que uso en C++ y veo que de poco sirve. Me cuesta aplicar conceptos antiguos a este contexto, cosas como patrones, o las clases mismamente.
Me gustaría encontrar información al respecto, errores más comunes, métodos para sacar el máximo partido al lenguaje,etc. Ojo que no quiero tutoriales de PHP ya que llevo varios años trasteando con el lenguaje y he hecho más de una web en él, pero hacer webs y hacer juegos (aunque esten dentro de una web) tienen poco que ver.

Quiero saber como lidiar con la concurrencia, como trabajar con clases sin que se creen y se destruyan en cada petición, etc.

Si alguien puede recomendarme un link, un libro o algun buen consejo se lo agradeceré.
#56
General / Review De Synchro En Typsource
22 de Noviembre de 2005, 07:56:53 PM
 Solo comentar que acabo de ver que han hecho un pequeño review de Synchro y es bastante positivo, supongo que a su autor Killua (que merodea por este foro) le hará ilusión saberlo.
#57
Off-topic / Machinima: The Awakening
21 de Julio de 2005, 11:55:45 PM
 Acabo de ver un corto de machinima hecho con Los Sims 2 y la verdad es que merece la pena verlo, de hecho todos los de este grupo son bastante interesantes.
Se llama The awakening, bajaros los dos episodios y si os sobra tiempo bajaros el resto.

#58
General / C# + Opengl Multiplataforma?
19 de Julio de 2005, 07:47:30 PM
 Mi pregunta es qué debo hacer si quiero hacer una aplicación multiplataforma (windows + linux) basandome en C# que use aceleración por hardware.
Actualmente uso CSGL pero esta librería solo wrappea las librerias de opengl que hay en windows.
He visto que el proyecto Mono tiene algo llamado Tao que se supone wrappea openGL, sin embargo no me queda claro como usar Tao ya que forma parte de Mono y yo compilo sobre .NET, existe alguna posibilidad de mezclar ambos?

Un saludo
#59
General Programadores / Duda Básica Sobre C#
12 de Julio de 2005, 06:49:24 PM
 Se que es una pregunta muy elemental pero me cuesta sacarme el chip de C++ y por más que busco no encuentro la respuesta a esta duda:

Si tengo objeto A y objeto B (de la misma clase) y quiero tener un puntero que pueda apuntar a uno de los dos (se que la palabra puntero está prohibida en C#) como lo hago? Para que pueda acceder a uno de los dos sin importarme cual es.

Es que tengo un array con coordenadas, en cada iteracion se actualizan pero quiero guardar las anteriores, así que pensé en tener dos arrays identicos y en lugar de machacar las coordenadas viejas por las nuevas simplemente alternar, ahora uso uno y luego el otro, así siempre tengo las coordenadas anteriores, pero para eso nada mejor que una variable que apunte al ultimo usado. No quiero hacer copias de los valores constantemente.

Es mucho pedir o la filosofia de C# impide hacer cosas así?

Gracias y perdon si la pregunta es muy estupida.
#60
 La duda es algo compleja así que trataré de exponerla lo mejor posible pero aviso que requiere ser leida con detenimiento, trata sobre herenciamultiple:

Tengo un template Composite que representa el patron de diseño del mismo nombre. Mediante este patron puedo hacer que cualquier clase tenga un padre y una serie de hijos, esta clase recibe como parametro el tipo de la clase que será padre o hijo y ya está, internamente no tiene ningun misterio.
Utilizo este template porque contantemente topo en mi codigo con que algun elemento tiene un padre y una serie de hijos por lo que viene bien disponer de ella.

Bien, por otra parte tambien ví que algunas clases de mi sistema necesitan poder enviar mensajes, así que pensé que lo mejor sería crear una clase MessageHandler que puede lanzar y recibir mensajes. Esta clase tiene un atributo que dice a quien debe enviarselos, y si no se le asigna nadie pues tira el mensaje a la basura.

Tengo implementada una clase Widget para cada elemento de mi GUI, cada widget contiene dentro una serie de widgets hijo, algo obvio, un widget ventana puede contener dentro un widget boton y un widget texto. Por eso hago que la clase widget herede de Composite, pero como además cada widget puede generar mensajes pues tambien hereda de MessageHandler.

De momento mediante esta jerarquía todo funciona perfectamente, pero el problema viene ahora.
Me gustaría hacer que cuando un widget genera un mensaje y no tiene asociado ningun MessageHandler que lo procese entonces que se lo envie a su padre, así de sencillo, pero claro, MessageHandler no sabe nada de padres e hijos, él no hereda de Composite así que no tiene esa parte.

He pensado - pues hagamos que MessageHandler tambien herede de Composite -, pero exactamente de Composite< qué? >, no puedo hacer que herede de Composite< Widget > porque un MessageHandler no tiene porqué saber de widgets. La solución sería que heredase de Composite< MessageHandler > y en parte sería correcto porque la clase Widget hereda de MessageHandler por lo tanto cuando hago que Widget herede de Composite< Widget > es como si hiciera que heredase de Composite< MessageHandler > pero no es así exactamente.

En resumen, qué puedo ahcer? Si hago que MessageHandler herede de Composite< MessageHandler > el compilador resolverá el problema o se liará y creerá que Composite< Widget > y Composite< MessageHandler > son clases diferentes y por lo tanto me vendrá con errores de ambiguedad al llamar a SetParent ?

Arf, esto del polimorfismo se complica cada vez más...

En fin, gracias por leerlo y espero que este no se convierta en otro thread de dudas sin respuesta de tamat.





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.