home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD76727112000.psc / modDD.bas < prev    next >
Encoding:
BASIC Source File  |  2000-07-10  |  4.1 KB  |  107 lines

  1. Attribute VB_Name = "modDD"
  2. Option Explicit
  3.  
  4. 'The Main Direct Draw Object
  5. Public ddMain As DirectDraw7
  6.  
  7. 'This is the primary buffer and its description
  8. Public PrimBuf As DirectDrawSurface7
  9. Public PrimBufDesc As DDSURFACEDESC2
  10.  
  11. 'This is the back buffer and its description
  12. Public BackBuf As DirectDrawSurface7
  13. Public BackBufDesc As DDSURFACEDESC2
  14.  
  15. 'This is used in the creation of the back buffer
  16. Public Caps As DDSCAPS2
  17.  
  18. 'The is the Surface we put the background picture in
  19. Public BGSurf As DirectDrawSurface7
  20. 'This is used for the blitting process
  21. Public rBGSurf As RECT
  22.  
  23. 'The is the Surface we put the sprites picture in
  24. Public SpriteSurf As DirectDrawSurface7
  25. 'This is used for the blitting process
  26. Public rSpriteSurf As RECT
  27.  
  28. 'This creates the Primary Surface and The Backbuffer
  29. Sub DD_CreatePrimBackBuf()
  30.  
  31.     'These are used to make the primary surface
  32.     PrimBufDesc.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
  33.     PrimBufDesc.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX
  34.     'This backbuffer count can be changed to 2 for triple buffering
  35.     PrimBufDesc.lBackBufferCount = 1
  36.     Set PrimBuf = ddMain.CreateSurface(PrimBufDesc)
  37.  
  38.     'These are used to make the backbuffer
  39.     Caps.lCaps = DDSCAPS_BACKBUFFER
  40.     Set BackBuf = PrimBuf.GetAttachedSurface(Caps)
  41.     Call BackBuf.GetSurfaceDesc(PrimBufDesc)
  42.  
  43.     'This sets the Fore color of the text at the top of the form
  44.     Call BackBuf.SetForeColor(RGB(150, 0, 0))
  45.     'This sets the back color of the text. This isn't really needed but, what the hell
  46.     Call BackBuf.SetFontBackColor(vbWhite)
  47.     'This sets the font to be transparent. If it was set to false a white block would
  48.     'show up around the text if you moved the sprite under it
  49.     Call BackBuf.SetFontTransparency(True)
  50.  
  51. End Sub
  52.  
  53. 'This is the sub that blits the surfaces to the backbuffer
  54. Sub DD_BltFast(rTop As Integer, rLeft As Integer, Width As Integer, Height As Integer, Surface As DirectDrawSurface7, srcRect As RECT, X As Integer, Y As Integer, Transparency As Boolean)
  55.  
  56.     'this is used for the image sizing process
  57.     'please note that my sprite is actually 200 pixels wide but it is set to 50 pixels
  58.     'in the main rendering loop
  59.     srcRect.Top = rTop
  60.     srcRect.Left = rLeft
  61.     srcRect.Right = Width
  62.     srcRect.Bottom = Height
  63.  
  64.     'If there is no transparency then
  65.     If Transparency = False Then
  66.         'blit it with no transparency
  67.         Call BackBuf.BltFast(X, Y, Surface, srcRect, DDBLTFAST_WAIT)
  68.     'If there is transparency then
  69.     Else
  70.         'blit it with transparency
  71.         Call BackBuf.BltFast(X, Y, Surface, srcRect, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
  72.     End If
  73.  
  74. End Sub
  75.  
  76. 'This creates the surfaces from their files
  77. Sub DD_CreateSurfFromFile(FileName As String, Surface As DirectDrawSurface7, SurfDesc As DDSURFACEDESC2, Width As Long, Height As Long)
  78.  
  79.     'This is part of the creation process
  80.     SurfDesc.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
  81.     'This sets the surfaces description to an off screen plain
  82.     SurfDesc.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
  83.     'This sets the height of the surfaces description
  84.     SurfDesc.lHeight = Height
  85.     'This sets the width of the surfaces description
  86.     SurfDesc.lWidth = Width
  87.  
  88.     'This sets the surface to the file with the above settings
  89.     Set Surface = ddMain.CreateSurfaceFromFile(FileName, SurfDesc)
  90.  
  91.     'These are used for transparency during the blitting process
  92.     Dim ColorKey As DDCOLORKEY
  93.     'the transparent color will be black
  94.     ColorKey.high = 0
  95.     ColorKey.low = 0
  96.     'This sets the surfaces color key to the color keys above
  97.     Call Surface.SetColorKey(DDCKEY_SRCBLT, ColorKey)
  98.  
  99. End Sub
  100.  
  101. 'This sub basically calls the above sub for easier transportation to the main initialization
  102. 'This makes it easier because I have multiple files I want in the application
  103. Sub DD_CreateGraphicsFromFile()
  104.     Call DD_CreateSurfFromFile(App.Path & "\bg.bmp", BGSurf, BackBufDesc, 640, 480)
  105.     Call DD_CreateSurfFromFile(App.Path & "\sprite.bmp", SpriteSurf, BackBufDesc, 200, 41)
  106. End Sub
  107.