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

#1
Proyecto dx_lib32 / Memoria
10 de Noviembre de 2016, 11:25:27 AM
Hola a todos!

He decidido retomar un proyecto que inicié hace años con esta librería.... y qué abandoné por el mismo motivo que me ocurre de nuevo: soy incapaz de gestionar los recursos en memoria. No se estabiliza el consumo de memoria y va en aumento poco a poco.  Os dejo el código:

Option Strict Off
Option Explicit On
Friend Class Form1
    Inherits System.Windows.Forms.Form


    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

        Me.Show()
        Graphics = New dx_lib32.dx_GFX_Class
        MainLoop = Graphics.Init(Me.Handle.ToInt32, 900, 500, 32, True)

        Do While MainLoop

            Select Case Estados
                Case 0 : CargarRecursos()
                Case 1 : BuclePrincipal()
            End Select

        Loop

    End Sub

    Private Sub Form1_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        MainLoop = False
        Graphics.Terminate()
        Graphics = Nothing
    End Sub

   

    Private Sub BuclePrincipal()
        nJuego.Update()
        nJuego.Draw()
    End Sub

End Class


Module programa

    Public Graphics As dx_lib32.dx_GFX_Class
    Public MainLoop As Boolean
    Public Estados As Integer = 0
    Public TexturaPista As Integer
    Public nJuego As New juego

    Public Sub CargarRecursos()
        TexturaPista = Graphics.MAP_Load("fondo.jpg", 0)
        Estados = 1
    End Sub

End Module


Public Class juego

    Public Sub Update()

    End Sub

    Public Sub Draw()

        Graphics.DRAW_Map(TexturaPista, 0, 0, 0, 0, 0)
        Graphics.Frame()

    End Sub

End Class


Seguramente debo ser un nefasto programador... Alguien me ayuda? Gracias!!!
#2
Proyecto dx_lib32 / Re: juego con muchas pantallas
24 de Marzo de 2011, 11:57:51 PM
Se supone que la carga de recursos iria en update?

si va en el método update de la clase de la pantalla en cuestión  se carga constantemente, si se pone en draw igual....

entonces?
#3
Proyecto dx_lib32 / Re: juego con muchas pantallas
22 de Marzo de 2011, 05:51:53 PM
estaba probando tus consejos y perdona, sólo una cosa:

el select case del metodo draw está claro que ha de ir dentro del loop pero el método update donde iria? ya que no hay que ir actualizando constantemente.

Entiendo que en draw va todo el dibujado y en update la carga de recursos. Es asi?

Gracias una vez más
#4
Proyecto dx_lib32 / Re: juego con muchas pantallas
22 de Marzo de 2011, 12:50:18 PM
Muchas gracias por tu ayuda. Intentaré implementar esas pantallas como has comentado esperando tener éxito.

Aprovecho para darte la enhorabuena, tanto por la libreria como por la labor de ayuda constante.

Un saludo
#5
Proyecto dx_lib32 / Re: juego con muchas pantallas
22 de Marzo de 2011, 10:46:24 AM
exacto... como implemento eso??

gracias
#6
Proyecto dx_lib32 / Re: juego con muchas pantallas
22 de Marzo de 2011, 10:16:27 AM

Quizás me he explicado mal, es que yo lo que necesito es:

quiero hacer un juego tipo manager y por lo tanto necesito varias pantallas: alineación, tácticas, etc....

como puedo hacer eso???


gracias por todo
#7
Proyecto dx_lib32 / Re: juego con muchas pantallas
22 de Marzo de 2011, 09:16:32 AM
Lo que no entiendo entonces es como programan esos juegos que tienen tantas pantallas porque aunque esta libreria no soporte mas de un render a la vez, en realidad programar sobre directx es igual si no me equivoco. Estoy mirando y no entiendo como se puede hacer eso.

Alguna sugerencia?
#8
Proyecto dx_lib32 / juego con muchas pantallas
22 de Marzo de 2011, 12:36:04 AM
Hola,

está claro que la libreria está diseñada para trabajar en una única ventana, así que mi duda es: se puede hacer un juego que requiere de muchas pantallas(ventanas) diferentes?

como se implementaria?

Gracias
#9
Proyecto dx_lib32 / gestión de los recursos
12 de Marzo de 2011, 07:25:59 PM
Buenas,

tengo una duda, de que manera puedo gestionar esos recursos que van cambiando en memoria y que no podria cargarlos de antemano en memoria.

Me explico, resulta que quiero ir mostrando una serie una de fotos que iran cambiando "en directo", habia probado de irlos cargando, mostrarlos y despues descargarlos con m_gfx.MAP_Unload(foto), al principio el sistema se muestra estable y no consume recursos pero con el tiempo, mucho tiempo por cierto, la memoria va aumentando en consumo y dejan de mostrarse por falta de recursos.

Gracias.
#10
Proyecto dx_lib32 / Re: antialiasing en dibujado de fuentes
10 de Marzo de 2011, 08:03:00 AM
Precisamente porque eso decia que esa función no afectaba a las fuentes pero he comprobado que no suaviza las fuentes como deberia por mucha calidad que tengan.

Si puedo colgaré un ejemplo. No sé si a más gente le pasa esto.

Saludos
#11
Proyecto dx_lib32 / antialiasing en dibujado de fuentes
09 de Marzo de 2011, 07:11:17 PM

Es posible dibujar las fuentes en antialiasing?

he visto que existe la funcion DEVICE_SetAntialiasing() pero no he notado efecto alguno....
según la documentación: Activa o desactiva el suavizado de contorno de píxeles en las operaciones de dibujo de primitivas.

Gracias.
#12
Proyecto dx_lib32 / Re: mover un objeto
09 de Marzo de 2011, 06:29:30 PM
Hechelion,

podrias poner un ejemplo de código del tema focos para que me aclare?

Gracias
#13
Proyecto dx_lib32 / Re: mover un objeto
09 de Marzo de 2011, 08:05:19 AM
El problema con el que me encuentro ahora es que con el objeto pulsado lo puedo mover libremente pero si paso por encima de otro objeto como se produce el mouse_press me "absorbe" ese objeto.

No se me ocurre una condicion que esté dentro de la propia clase para que esto no ocurra.

¿Se os ocurre algo?

Gracias
#14
Proyecto dx_lib32 / Re: mover un objeto
08 de Marzo de 2011, 11:34:56 PM
Ya he hecho unos pequeño arreglitos a la clase y lista....

Gracias a todos
#15
Proyecto dx_lib32 / Re: mover un objeto
08 de Marzo de 2011, 07:30:17 PM
He seguido tus consejos y a falta de mirarme los dictionary para descargar recursos la clase quedaria asi pero sigue sin funcionar, podria ser del press? :

Código (vb) [Seleccionar]

Public Class ficha

    Private top As Long, left As Long
    Private texto As String
    Private rec_zona_impacto As GFX_Rect
    Private fnt_system1 As Long
    Private gfx_ficha As Long
    Private color As Integer = m_gfx.ARGB_Set(255, 0, 0, 0)

    Public Sub New()
        fnt_system1 = m_gfx.FONT_LoadSystemFontFromFile(Application.StartupPath & "fonts\proman10.ttf", "proman", 8, False, False, False, False)
        gfx_ficha = m_gfx.MAP_Load(Application.StartupPath & "img\ficha.png", 0)
    End Sub

    Public Sub posicionar(ByVal x As Long, ByVal y As Long)
        left = x : top = y
        nueva_zona_impacto()
    End Sub

    Public Sub draw(ByVal texto As String)
        m_gfx.DRAW_Map(gfx_ficha, left, top, -8, 0, 0)
        m_gfx.DRAW_Text(fnt_system1, texto, left, top + 35, -8, color, Text_Align.Align_Left)
    End Sub

    Public Sub update()
        If m_system.MATH_PointInRect(m_input.Mouse.X, m_input.Mouse.Y, rec_zona_impacto) Then

            Cursor.Current = Cursors.Hand

            If HitEvent.Mouse_Hit(Mouse_Button.Left_Button) And m_input.Mouse_Press = 1 Then
                left = m_input.Mouse.X
                top = m_input.Mouse.Y
            End If
            rec_zona_impacto.X = left : rec_zona_impacto.Y = top
            rec_zona_impacto.Width = 30 : rec_zona_impacto.Height = 30

        End If
    End Sub

    Private Sub nueva_zona_impacto()
        rec_zona_impacto.X = left : rec_zona_impacto.Y = top
        rec_zona_impacto.Width = 30 : rec_zona_impacto.Height = 30
    End Sub
    Protected Overrides Sub Finalize()
        MyBase.Finalize()

        m_gfx.FONT_UnloadSystemFont(fnt_system1)
        m_gfx.MAP_Unload(gfx_ficha)

    End Sub



End Class





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.