DirectDraw

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: DirectDraw

by Sunshine » 2006年3月24日(金) 22:18

 イグトランスさん、ありがとうございます。
 とりあえず、CImage2Dクラスに以下の関数を追加してみました。

コード: 全て選択

	Function PasteDC(nXDest As Long, nYDest As Long, nWidth As Long, nHeight As Long, hdcSrc As HDC, nXSrc As Long, nYSrc As Long, dwRop As DWord) As Long
		Dim lpD3DSurface As LPDIRECT3DSURFACE9
		Dim hdcDest As HDC
		'サーフェイスの取得
		lpD3DTexture->GetSurfaceLevel(0, VarPtr(lpD3DSurface))
		'デバイスコンテキストの取得
		lpD3DSurface->GetDC(VarPtr(hdcDest))

		'描画
		PasteDC = BitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, dwRop)

		'開放
		lpD3DSurface->ReleaseDC(hdcDest)
		lpD3DSurface->Release()
	End Function
 しかし、これではこの関数を呼び出す前に、CImage2D::SetTexture関数を呼び出さないと、当然アクセス違反になってしまいます。わざわざSetTexture関数を呼ばなくてもいいような、もうちょっと使い勝手がいい関数にしたいのですが、どのように手直ししたらいいでしょうか。テクスチャの作り方さっぱりです…
 あとメモリリークを起こしていないか心配だ…(^^;

by イグトランス » 2006年3月24日(金) 09:31

dx_GetDevice関数を使うとIDirect3DDevice9へのポインタが得られます。
IDirect3DDevice9にはサーフェイスを作るメソッドがあります。

DirectXはロクにやったことがないので細かいことはわかりませんがこれでどうでしょうか?

DirectDraw

by Sunshine » 2006年3月24日(金) 02:14

 DirectDrawにおいて、あるデバイスコンテキストの内容を2Dテクスチャにコピーしたいのですが、方法が分かりません。
 恐らく、テクスチャのサーフェイスを取得してIDirect3DSurface9::GetDC関数でデバイスコンテキストを取得し、そこにBitBltでコピーする、と思うのですが、肝心のサーフェイスの取得方法がわかりません。
 どうすればできるのでしょうか。

ページトップ