游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2302|回复: 6

D3D初学请教:使用surface的问题

[复制链接]

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2005-12-19 17:14:00 | 显示全部楼层 |阅读模式
还没到3D阶段,只是显示一张jpg图,参考了一些lights的代码和DX文档,于是写下以下代码

Private myDevice As Device = Nothing
Private PresentParameters As New Microsoft.DirectX.Direct3D.PresentParameters
Private mySwapChain As SwapChain
Private FrontSurface As Surface = Nothing  '前台surface
Private BackSurface As Surface = Nothing '后台surface
Private FrontDescription As New SurfaceDescription
Private BackDescription As New SurfaceDescription

'创建Device
Public Sub CreateDevice(ByVal hd As IntPtr, ByVal FullScreenMode As Boolean)
PresentParameters.Windowed = True
PresentParameters.SwapEffect = SwapEffect.Discard
myDevice = New Device(0, DeviceType.Hardware, hd, CreateFlags.SoftwareVertexProcessing, PresentParameters)
mySwapChain = New SwapChain(myDevice, PresentParameters)
End Sub

'创建surface
Public Sub CreateSurface()
FrontDescription.Format = Format.X1R5G5B5
FrontDescription.Width = 1024
FrontDescription.Height = 768
FrontSurface = myDevice.CreateDepthStencilSurface(1024, 768, DepthFormat.D16, MultiSampleType.None, 0, True)
BackDescription.Format = Format.X1R5G5B5
BackDescription.Width = 1024
BackDescription.Height = 768
BackSurface = myDevice.CreateOffscreenPlainSurface(1024, 768, Format.X1R5G5B5, Pool.Default)
'从贴图建立材质surface
Dim TextureSurface As Surface= TextureLoader.FromFile(myDevice, "Test.jpg").GetSurfaceLevel(0)
'导入到后台surface
SurfaceLoader.FromSurface(BackSurface, New Rectangle(0, 0, 1024, 768), TextureSurface, New Rectangle(0, 0, 1024, 768), Filter.Box, Color.Red.ToArgb)
End Sub

'显示函数
Public Sub Draw()
myDevice.Clear(ClearFlag, ClearColor, 1, 0)
myDevice.BeginScene()
FrontSurface = mySwapChain.GetBackBuffer(0, BackBufferType.Mono)
myDevice.EndScene()
myDevice.Present()
End Sub

经过多次调试倒是不报什么错误了,但是调用Draw后显示的内容并不是图片Test.jpg,而是乱色块,请问我错漏了什么?
(Test.jpg是一张1024*768的16M色图片,我的电脑当前显示分辨率1024*768 16Bit色)

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2005-12-19 17:45:00 | 显示全部楼层

Re:D3D初学请教:使用surface的问题

texture  是要2^N
所以 1024*768 ????成1024*1024 ??D
??不出?
可能是 格式有???不支援Format.X1R5G5B5

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
 楼主| 发表于 2005-12-20 16:59:00 | 显示全部楼层

Re:D3D初学请教:使用surface的问题

我首先不明白的是,系统怎么能知道我自己定义的那两个surface哪个是前台的,哪个是后台的

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2005-12-21 10:17:00 | 显示全部楼层

Re:D3D初学请教:使用surface的问题

直接用D3D了,载入纹理不会出错,什么格式都支持.绘制也不会有问题

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-12-21 10:26:00 | 显示全部楼层

Re:D3D初学请教:使用surface的问题

高手在哪里???

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-12-21 12:36:00 | 显示全部楼层

Re:D3D初学请教:使用surface的问题

初学者需要例子,我不明白,

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-12-21 13:51:00 | 显示全部楼层

Re:D3D初学请教:使用surface的问题

我怀疑你也不懂,别装!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 01:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表