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

Mensajes - [EX3]

#5176
                                Hombre, el tema no es ke haga el alphablend a las zonas con el ColorKey, simplemente ke no las dibuje.

Por cierto, ¿Sabes de algun tuto que explique el uso del AlphaTest?
Gracias.

Salu2...

P.D.: Al final no he logrado entender el funcionamiento del alphablend de akel ejemplo ke me baje, a parte de la ayuda ke me podais brindar seguire buscando por ahi.                                
#5177
                                Es mas sencillo, me refiero al alphablending tradicional, ese que le pasas como parametro la intensidad de transparencia que tendria la textura entera, solo que no se por que no me respeta el ColorKey de la textura, color que no tiene ke dibujar.

Me mosquea que acabo de encontrar un ejemplo que hace lo que yo kiero, utilizando bitmaps. Es un ejemplo de mecanica de particulas, cada particula es un pequeño bitmap que se va haciendo mas transparente dependiendo de la distancia, pero no logro entender el codigo responsable del alphablend. Seguire ojeandolo, ke insistiendo se consigue todo, jeje  :ojo:

Por cierto, lo del D3DRS_TEXTUREFACTOR me venia en el codigo del ejemplo de DirectX7 y sin el no funcionaba el alphablend.

Salu2...                                
#5178
                                He visto tu tutorial sobre AlphaBlend y esta muy interesante, pero ese metodo, por lo que he visto, no me permite hacer alphablending progresivo, vamos, que no puedo decirle que intensidad de transparencia tiene que darle a la textura al renderizar, corrigeme si me equivoco, que en d3d toadavia estoy tan verde como RGB(0,255,0) :jaja:.

Esto es lo que conseguia hacer en una version de la dx_lib32 que era un hibrido entre DirectDraw y Direct3D 'Inmediate Mode' (DirectX 7), ahi utilizaba el codigo anterior y parecia que funcionaba:
http://usuarios.lycos.es/dxlib32/images/OldVer/01.JPG
http://usuarios.lycos.es/dxlib32/images/OldVer/02.JPG

Esto es lo que me ocurre con Direct Graphics utilizando el mismo codigo:
http://usuarios.lycos.es/dxlib32/images/Test/101.jpg                                
#5179
                                Nas:

Tengo problemas al realizar alphablend sobre una textura en Direct Graphics, el alphablend me lo hace pero no respeta el ColorKey de la transparencia de la textura, en vez de omitir el color que no debe dibujar lo muestra en negro.

El codigo que uso lo saque de un ejemplo de Direct3D7:



           Device.SetRenderState D3DRENDERSTATE_ALPHABLENDENABLE, 1

           Device.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA

           Device.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA

           Device.SetRenderState D3DRS_TEXTUREFACTOR, D3DColorRGBA(255, 255, 255, AlphaBlendValue)

           Device.SetTextureStageState 0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR





Si hay otra forma de hacer el alphablend en Direct Graphics agradeceria que me la explicaran.

Gracias y Salu2...

[EX3]                                
#5180
General Programadores / Insetando videos ...
13 de Abril de 2003, 02:05:14 AM
                                Nas

Yo en mi proyecto utilizo DirectShow para reproducir videos AVI y MPGE, lo de reproducir videos comprimidos o no depende de los codecs ke tengas instalados. Revisa los ejemplos del SDK, ahi viene un ejemplo de reproductor multimedia con DirectShow.

Salu2...

[EX3]                                
#5181
Programación gráfica / Las 2D todavia tienen futuro
23 de Marzo de 2003, 09:11:30 AM
                                Como echo de menos un buen plataformas 2D al estilo Prince of Persia o Flash Back!

Las 2D no mueren, sobreviven por ke son inprescindibles!                                
#5182
                                Nas:

Estoy intentando pasarme a DirectGraphics para poder dotar a mi engine 2D de funciones avanzadas (Alphablend, Rotacion, ...) ya que DirectDraw no las soporta (y el Alphablending a pelo en VB no rinde muy bien  :-? ), pero tengo ciertos problemillas que no logro solucionar y me frenan en mi intento por migrar a DirectGraphics:

1. ¿Como puedo leer un pixel de una textura en DirectGraphics?
2. ¿Se puede trabajar sobre otra superficie o textura a parte del BackBuffer?
3. ¿El manejo del factor Gamma es similar al de DirectDraw?
4. Otra cosa que no tengo clara, dibujo de primitivas ¿Es similar al de un poligono?

... y alguna duda más que ahora mismo no recuerdo.

Si podeis ayudarme con direcciones de paginas donde expliquen estas cosas o algun tuto que merezca la pena o incluso si alguno se anima a explicarmelo, lo agradeceria mucho.

Gracias...

[EX3]                                
#5183
                                ASC(String As String) As Integer Esto te devuelve el codigo ASCII del caracter que pongas como parametro.                                
#5184
                               
CitarBueno, quillo, que te responda un programador que yo no tengo ni idea. Es pq he visto cero replies.
jeje, agradezco tu interes  :)

Mi razon de no utilizar formularios es por ke estoy programando una dll y no es plan de meter formularios, ya que esta pensada para contener solo funciones.

Si, tambien podria utilizar el evento keypress desde el formulario en que programe la aplicacion que use la dll, por supuesto, pero para mi es mas comodo usar una funcion que me devuelva el valor ASCII como en BASIC u otros lenguajes, en vez de tener de ke usar el evento keypress.

Espero haber aclarado tu duda  :ojo:
y yo a seguir esperando... a ver si hay suerte  :D

Salu2...

[EX3]                                
#5185
                                Nas:

Necesito encontrar una funcion para VB que me devuelva el codigo ASCII cuando presiono una tecla sin utilizar el evento KeyPress del formulario, ya que estoy trabajando sin formularios, solo a nivel de modulos *.bas.

Salu2...

[EX3]                                
#5186
                                Gracias por contestar  :)

He probado tu codigo en mi programa que uso para probar la funcion de derivado a RGB y este es el resultado:

Color  /  32 Bits   /     16 Bits
--------------------------------
Rojo   /   255,0,0   /    0,0,31
Verde  /  0,255,0   /    0,63,0
Azul   /    0,0,255   /    31,0,0
Amarillo / 255,255,0  /  0,63,31
Blanco / 255,255,255 / 31,63,31

No se si por ser 16 Bits tiene que devolver esos valores, si no es asi seguro que con alguna operacion matematica se pueden cuadrar los resultados con los obtenidos en 32 Bits.
Lo de que el valor de rojo aparezca en el azul y viceversa es un problema que ya experimente, pero que tiene facil solucion.

Sea como sea, mas o menos, ya podria trabajar con la lectura de color en 16 Bits, algo es algo, muchas gracias por la ayuda  :D.

Salu2...

[EX3]                                
#5187
                                Nas y Feliz Año a tod@s:

Estoy implementando una funcion para extraer los componentes RGB de un color devuelto por la funcion GetPixel() de DirectDraw en Visual Basic.

La conversion en 32Bits de color funciona perfectamente, pero cuando ejecuto la funcion en 16Bits, como es logico, el resultado de GetPixel() es diferente y la conversion a RGB no es correcta.

¿Como puedo hacer una conversion de color a RGB en 16Bits que sea fiable?

Salu2...

[EX3]                                
#5188
General Programadores / Mas sencillo aun
19 de Diciembre de 2002, 09:56:00 PM
                                Y no es mas sencillo usar la simple funcion del VB "Shell()"?

Sintaxis:
Shell ([Ruta y/o nombre de programa], [Estilo de presentacion]) As Double
El primer parametro es simplemente la direccion y nombre del programa ejecutable.
El segundo parametro es la forma de presentar la ventana (Nomal, Maximizada, Minimizada, etc...)

Abrimos el block de notas tal cual. Ejemplo:
Private Sub Form_Load()

Shell "c:windowsnotepad.exe", vbNormalFocus

End Sub



Abrimos el block de notas y le decimos que abra el archivo texto.txt que se encuentra en c:. Ejemplo:
Private Sub Form_Load()

Shell "c:windowsnotepad.exe c:texto.txt", vbNormalFocus

End Sub



Como puedes ver es la manera más sencilla que tiene VB de llamar a un programa externo.

Salu2...

[EX3]                                
#5189
General Programadores / Time Out! jeje
19 de Diciembre de 2002, 06:48:47 PM
                                Al fin una respuesta, ya pensaba que nadie responderia,  :jaja:

Hace ya dos semanas que solucione el problema de los cronometros y con buen resultado y utilizando la "tipica" funcion GetTickCount() de Windows, pero aun asi muchas gracias por vuestra ayuda.  :ojo:

Os explico, utilize la formula de calculo de FPS de mi motor para hacer el incremento en los cronometros:

Esta es la formula tipica de calculo de FPS:

'Para los cuadros por segundo

Dim FPS_tUltimo As Long

Dim FPS_Suma As Single

Dim FPS_Actual As Single 'Los FPS del programa.



'Declaración de la función API para manejar los tiempos

Private Declare Function GetTickCount Lib "kernel32" () As Long



Private Sub FPS_Count()



   If (GetTickCount() - FPS_tUltimo) >= 1000 Then

       FPS_Actual = FPS_Suma

       FPS_Suma = 0

       FPS_tUltimo = GetTickCount()

   End If

   FPS_Suma = FPS_Suma + 1



End Sub



Mi cronometro seria asi:

Dim m_Timer As Long 'Cronometro.

Dim Last_Tick As Long 'Guarda el ultimo ciclo de reloj.



'Declaración de la función API para manejar los tiempos

Private Declare Function GetTickCount Lib "kernel32" () As Long



Private Sub Timer_Count()

   

   'Si "GetTickCount()" menos el "Ultimo Ciclo del reloj" es igual o mayor que un segundo...

   If (GetTickCount() - Last_Tick) >= 1000 Then

       Last_Tick = GetTickCount()

       m_Timer = m_Timer + 1 '... incremento el cronometro.

   End If



End Sub



Este ejemplo realiza el incremento cada segundo.
Esta formula es la que tengo actualmente implementada en el motor pero con precision en decimas y no me ha dado ningun problema de momento.

Aun asi probare con las otras funciones que me habeis facilitado, que nunca viene nada mal probar otras maneras.

Gracias  :)

[EX3]                                
#5190
General Programadores / LAPSUS!!!
25 de Noviembre de 2002, 04:18:34 PM
                                Cuando digo ke a veces estoy en la parra no me ekivoco!  :oops:

Se me olvido mencionar que los cronometros que estoy intentando crear los programo en Visual Basic, ke burrada por mi parte seria, jeje  :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.