⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 07.txt

📁 介绍VB里的各种控件的使用方法,窗口控制,图像编程以及OCX等内容,还提供了一个API集供参考.
💻 TXT
字号:
DirectX7.0使用心得(2) 
设定完视窗模式或全屏幕模式后,如果你是设定成全屏幕模式的话(也就是独占模式),接著就必须设定显示模式。
objDD.SetDisplayMode 640, 480, 16, 0, DDSDM_DEFAULT
参数中的640,480指的是640x480的模式,而16指的是16万色,如果是8的话则是256色,想改变显示模式的话只要改变这三个变数就可以了,一般常用的模式有:
320x200 16万
320x240 256
640x480 256
640x480 16万

Surface简介:
Surface就是DirectDraw用的显示记忆体,图像就是要画在Surface上面,一般来说有分成几种类型。
primary surface 屏幕上可以看到的显示记忆体,图像画在上面就能显示在屏幕上。
backbuffer surface 这是一个能跟primary surface作快速切换的Surface。
offscreen surface 这是一个屏幕上看不见的Surface,可以用来存放图像。

我们现在就先来介绍建立primary surface的方法,首先得宣告一个Surface物件和一个DDSURFACEDESC结构。
Dim objDDPrimSurf As DirectDrawSurface7
Dim ddsd1 As DDSURFACEDESC2

'DDSURFACEDESC主要是记录一个Surface的结构,像是Surface的高度、宽度之类的,建立一个primary surface通常只要填入ddsCaps就可以了。
ddsd1.lFlags = DDSD_CAPS '设定DDSURFACEDESC结构中的ddsCaps有效。
ddsd1.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE '设定要建立的是primary suface。
Set objDDPrimSurf = objDD.CreateSurface(ddsd1) '呼叫CreateSurface后即建立完成。

'offscreen surface的建立法则是要设定DDSURFACEDESC结构中的ddsCaps、dwHeight、dwWidth。
Dim objDDOffSurf As DirectDrawSurface7
Dim ddsd1 As DDSURFACEDESC2

ddsd1.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
'设定ddsCaps、lHeight、lWidth有效
ddsd1.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN '设定要建立offscreen surface
ddsd1.lWidth = 640 '设定Surface的宽度
ddsd1.lHeight = 480 '设定Surface的长度
Set objDDOffSurf = objDD.CreateSurfaceFromFile("img1.bmp", ddsd1)
'offscreen surface建立完成并把img.bmp图档读取到offscreen surface里面。

一般来说不会直接在primary surface上直接画图,我通常都是先在backbuffer surface上画,再利用切换的功能将Primary surface和backbuffer surface交换,所以在这里介绍backbuffer surface的建立方法,由於要跟primary surface一起建立,所以Primary surface的建立方法也就有点不同。
Dim objDDPrimSurf As DirectDrawSurface7
Dim objDDBackSurf As DirectDrawSurface7
Dim ddsd1 As DDSURFACEDESC2

ddsd1.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
'设定ddsCaps和lBackBufferCount有效
ddsd1.lBackBufferCount = 1 '设定Backbuffer surface的数量
ddsd1.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX
'设定要建立一个由primary surface和backbuffer surface 所构成的Surface
Set objDDPrimSurf = objDD.CreateSurface(ddsd1) 'primary surface建立完成

Dim caps As DDSCAPS2 宣告一个DDSCAPS结构
caps.lCaps = DDSCAPS_BACKBUFFER 设定要建立backbuffer surface
Set objDDBackSurf = objDDPrimSurf.GetAttachedSurface(caps) backbuffer suface 建立完成

Surface的部分讲完了,下一篇要说的是如何使用Blt和BltFast来作Surface间的图形的复制和搬移,就可以开始在Surface上画画罗。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -