Ayuda DDrawGrhtoSurface

Ir abajo

Ayuda DDrawGrhtoSurface

Mensaje por [^Ozuna^] el 14/5/2016, 12:55 pm

Primero que nada, no es un error, los graficos no se dibujan como deberían, usando solo una parte del grafico, sino un poco raro, como dibujando todo el grafico y que cambia si es una animacion.
No es error del indexado de grhs ni otra cosa.

Estoy mudando un juego a Dx8, no es el AO pero es una base, asi que creo que ustedes pueden saber

Antes con Dx7 no pasaba obvio
Código:
Surface.BltFast Base.Left, Base.Top, SurfaceDB(GrhData(CurrentGrh.grhindex).FileNum), SourceRect, DDBLTFAST_WAIT


Asi es como llamo la funcion ahora
Código:
SurfaceDB(GrhData(CurrentGrh.grhindex).FileNum).Render destRect.Left - MenosX, destRect.Top - MenosY, GrhData(CurrentGrh.grhindex).pixelWidth, GrhData(CurrentGrh.grhindex).pixelHeight, _
            GrhData(CurrentGrh.grhindex).sX, GrhData(CurrentGrh.grhindex).sY, GrhData(CurrentGrh.grhindex).sX + GrhData(CurrentGrh.grhindex).pixelWidth, GrhData(CurrentGrh.grhindex).sY + GrhData(CurrentGrh.grhindex).pixelHeight, 0, 255

El tema es que nose si el error es ahí, o en la funcion para dibujar, aclaro que cada SurfaceDB() es una clase, clsTexture. Asi que les dejo la funcion del dibujado
Código:
Sub Render(ByVal x As Single, ByVal y As Single, ByVal Width As Single, ByVal Height As Single, ByVal SrcX As Single, ByVal SrcY As Single, Optional ByVal SrcWidth As Long = -1, Optional ByVal SrcHeight As Single = -1, Optional angle As Single = 0, Optional alphaValue As Integer = 255)
    Dim CosQ As Single
    Dim SinQ As Single
    Dim TempX As Single, TempY As Single
    Dim XCenter As Single, YCenter As Single
    
    If m_Texture Is Nothing Then LoadTexture
    
    D3DDevice.SetTexture 0, m_Texture
    
    If SrcWidth = -1 Then SrcWidth = Width
    If SrcHeight = -1 Then SrcHeight = Height
        
    XCenter = x + Width / 2
    YCenter = y + Height / 2
        
    SinQ = Sin(angle * Deg2Rad)
    CosQ = Cos(angle * Deg2Rad)

    m_Vertices(0) = CreateTLVertex(x, y, 1, 1, D3DColorARGB(alphaValue, 255, 255, 255), 0, SrcX / Width, SrcY / Height)
    m_Vertices(1) = CreateTLVertex(x + Width, y, 1, 1, D3DColorARGB(alphaValue, 255, 255, 255), 0, (SrcX + SrcWidth) / Width, SrcY / Height)
    m_Vertices(2) = CreateTLVertex(x, y + Height, 1, 1, D3DColorARGB(alphaValue, 255, 255, 255), 0, SrcX / Width, (SrcY + SrcHeight) / Height)
    m_Vertices(3) = CreateTLVertex(x + Width, y + Height, 1, 1, D3DColorARGB(alphaValue, 255, 255, 255), 0, (SrcX + SrcWidth) / Width, (SrcY + SrcHeight) / Height)
    
    Dim I As Integer
    For I = 0 To 3
        With m_Vertices(I)
            TempX = ((.x - XCenter) * CosQ) - ((.y - YCenter) * SinQ)
            TempY = ((.x - XCenter) * SinQ) + ((.y - YCenter) * CosQ)
            .x = TempX + XCenter
            .y = TempY + YCenter
        End With
    Next
          
'    If alphaValue < 255 Then
       'Set Rendering for alphablending
        D3DDevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_ONE
        D3DDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_ONE
'    End If
    
    
        
    
    D3DDevice.DrawPrimitiveUP D3DPT_TRIANGLESTRIP, 2, m_Vertices(0), Len(m_Vertices(0))
    
    
'    If alphaValue < 255 Then
        'Set Rendering for colokeying
        D3DDevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
        D3DDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
'    End If


    m_TimeSinceRender = GetTickCount()
    
End Sub

Como ven es muy diferente al original, sacado generalmente de un AO Dx8 cualquiera
Código:
Public Sub Device_Box_Textured_Render(ByVal grhindex As Long, ByVal dest_x As Integer, ByVal dest_y As Integer, ByVal src_width As Integer, _
                                            ByVal src_height As Integer, ByRef rgb_list() As Long, ByVal src_x As Integer, _
                                            ByVal src_y As Integer, Optional ByVal alpha_blend As Boolean, Optional ByVal angle As Single)
'**************************************************************
'Author: Juan Martín Sotuyo Dodero
'Last Modify Date: 2/12/2004
'Just copies the Textures
'**************************************************************
    Static src_rect As RECT
    Static dest_rect As RECT
    Static temp_verts(3) As TLVERTEX
    Static d3dTextures As d3dTextures
    Static light_value(0 To 3) As Long

    If grhindex = 0 Then Exit Sub
    Set d3dTextures.Texture = SurfaceDB.GetTexture(GrhData(grhindex).FileNum, d3dTextures.texwidth, d3dTextures.texheight)

    light_value(0) = rgb_list(0)
    light_value(1) = rgb_list(1)
    light_value(2) = rgb_list(2)
    light_value(3) = rgb_list(3)

    'If Not char_current_blind Then
        If (light_value(0) = 0) Then light_value(0) = base_light
        If (light_value(1) = 0) Then light_value(1) = base_light
        If (light_value(2) = 0) Then light_value(2) = base_light
        If (light_value(3) = 0) Then light_value(3) = base_light
    'Else
    '    light_value(0) = &HFFFFFFFF 'blind_color
    '    light_value(1) = &HFFFFFFFF 'blind_color
    '    light_value(2) = &HFFFFFFFF 'blind_color
    '    light_value(3) = &HFFFFFFFF 'blind_color
    'End If

    'Set up the source rectangle
    With src_rect
        .bottom = src_y + src_height
        .Left = src_x
        .Right = src_x + src_width
        .Top = src_y
    End With

    'Set up the destination rectangle
    With dest_rect
        .bottom = dest_y + src_height
        .Left = dest_x
        .Right = dest_x + src_width
        .Top = dest_y
    End With

    'Set up the TempVerts(3) vertices
    Geometry_Create_Box temp_verts(), dest_rect, src_rect, light_value(), d3dTextures.texwidth, d3dTextures.texheight, angle

    'Set Textures
    D3DDevice.SetTexture 0, d3dTextures.Texture

    If alpha_blend Then
       'Set Rendering for alphablending
        D3DDevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_ONE
        D3DDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_ONE
    End If

    'Draw the triangles that make up our square Textures
    D3DDevice.DrawPrimitiveUP D3DPT_TRIANGLESTRIP, 2, temp_verts(0), Len(temp_verts(0))

    If alpha_blend Then
        'Set Rendering for colokeying
        D3DDevice.SetRenderState D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
        D3DDevice.SetRenderState D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
    End If

End Sub

Gracias y
Saludos!

[^Ozuna^]
Nivel 1
Nivel 1

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 2
Localización : Sean Paul & Byno
Fecha de inscripción : 14/05/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda DDrawGrhtoSurface

Mensaje por Toyz el 14/5/2016, 3:19 pm

Los graficos de dx7 no sirven para dx8.


_______________

Como saben yo aporto bastante en Servers-Argentum y les quiero decir que todos tienen derecho de usar y de aportar en otra comunidad mis aportes pero sólo con un requisito y es tan simple que dejar los créditos. Gracias.
Si conocen otra comunidad y en esa misma mis aportes no están aportados, si tenés tiempo y ganas, aportalo! A mucha gente le puede servir. No te olvides del requisito Razz

MIS MEJORES APORTES:

Compra/venta de personajes:
https://goo.gl/A44Av0

Juegos del Hambre:
https://goo.gl/u6aNUG

Deathmatch automático:
https://goo.gl/GQF4fK

Sistema de retos vía MMR con búsqueda, emparejamiento, etc:
https://goo.gl/40uP0f

Sistemas de eventos automáticos de 1vs1 hasta 10vs10:
https://goo.gl/XYKygc

1VS1 - AIM - MELEE - Gana Sigue (Se liberan cupos)
https://goo.gl/qq83wx

Retos 3vs3 - [Items, 2 rounds, múltiples arenas, oro]
https://goo.gl/x8SMnV

Eliminar sistema de Skill (COMPLETO)
https://goo.gl/mKxHzC
avatar
Toyz
Administrador
Administrador

¿BANEADO? : No.
Premios :
[1er puesto] Usuario del año 2016
Cantidad de envíos : 5045
Edad : 17
Localización : Global.
Fecha de inscripción : 28/09/2014

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda DDrawGrhtoSurface

Mensaje por ryake el 15/5/2016, 2:12 pm

El Perro Justiciero escribió:Los graficos de dx7 no sirven para dx8.
????????????????????????????????????????
avatar
ryake
Nivel 6
Nivel 6

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 320
Edad : 28
Localización : Allahu akbar
Fecha de inscripción : 18/05/2011

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda DDrawGrhtoSurface

Mensaje por [^Ozuna^] el 15/5/2016, 2:45 pm

@ryake escribió:
El Perro Justiciero escribió:Los graficos de dx7 no sirven para dx8.
????????????????????????????????????????
No me esperaba una respuesta asi jajajaja
Lo hice funcionar a medias, usando el renderizado del ao dx8, solo se ven la capa 1, los cuerpos y algunos grhs, pero tambien es problema de la parte  gráfica, creo que algo del zbuffer
Desp mando foto
Pd: Cuicuiiiiiii que onda con gs??
Creo que recien ahora anda

[^Ozuna^]
Nivel 1
Nivel 1

¿BANEADO? : No.
Premios : Ninguno.
Cantidad de envíos : 2
Localización : Sean Paul & Byno
Fecha de inscripción : 14/05/2016

Ver perfil de usuario

Volver arriba Ir abajo

Re: Ayuda DDrawGrhtoSurface

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.