ホーム › Graphics.DirectDraw › DDCOMPBUFFERINFO
DDCOMPBUFFERINFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwSize | DWORD | 4 | +0 | +0 | この構造体のサイズをバイト単位で示す。 |
| dwNumCompBuffers | DWORD | 4 | +4 | +4 | 作成すべき圧縮バッファの個数。 |
| dwWidthToCreate | DWORD | 4 | +8 | +8 | 作成するバッファの幅をピクセル単位で示す。 |
| dwHeightToCreate | DWORD | 4 | +12 | +12 | 作成するバッファの高さをピクセル単位で示す。 |
| dwBytesToAllocate | DWORD | 4 | +16 | +16 | バッファ1個あたりに割り当てるバイト数。 |
| ddCompCaps | DDSCAPS2 | 16 | +20 | +20 | バッファの能力を示すDDSCAPS2。 |
| ddPixelFormat | DDPIXELFORMAT | 40/32 | +40 | +36 | バッファのピクセル形式を示すDDPIXELFORMAT。 |
各言語での定義
#include <windows.h>
// DDSCAPS2 (x64 16 / x86 16 バイト)
typedef struct DDSCAPS2 {
DWORD dwCaps;
DWORD dwCaps2;
DWORD dwCaps3;
_Anonymous_e__Union Anonymous;
} DDSCAPS2;
// DDPIXELFORMAT (x64 40 / x86 32 バイト)
typedef struct DDPIXELFORMAT {
DWORD dwSize;
DWORD dwFlags;
DWORD dwFourCC;
_Anonymous1_e__Union Anonymous1;
_Anonymous2_e__Union Anonymous2;
_Anonymous3_e__Union Anonymous3;
_Anonymous4_e__Union Anonymous4;
_Anonymous5_e__Union Anonymous5;
} DDPIXELFORMAT;
// DDCOMPBUFFERINFO (x64 80 / x86 68 バイト)
typedef struct DDCOMPBUFFERINFO {
DWORD dwSize;
DWORD dwNumCompBuffers;
DWORD dwWidthToCreate;
DWORD dwHeightToCreate;
DWORD dwBytesToAllocate;
DDSCAPS2 ddCompCaps;
DDPIXELFORMAT ddPixelFormat;
} DDCOMPBUFFERINFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDSCAPS2
{
public uint dwCaps;
public uint dwCaps2;
public uint dwCaps3;
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDPIXELFORMAT
{
public uint dwSize;
public uint dwFlags;
public uint dwFourCC;
public _Anonymous1_e__Union Anonymous1;
public _Anonymous2_e__Union Anonymous2;
public _Anonymous3_e__Union Anonymous3;
public _Anonymous4_e__Union Anonymous4;
public _Anonymous5_e__Union Anonymous5;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDCOMPBUFFERINFO
{
public uint dwSize;
public uint dwNumCompBuffers;
public uint dwWidthToCreate;
public uint dwHeightToCreate;
public uint dwBytesToAllocate;
public DDSCAPS2 ddCompCaps;
public DDPIXELFORMAT ddPixelFormat;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDSCAPS2
Public dwCaps As UInteger
Public dwCaps2 As UInteger
Public dwCaps3 As UInteger
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDPIXELFORMAT
Public dwSize As UInteger
Public dwFlags As UInteger
Public dwFourCC As UInteger
Public Anonymous1 As _Anonymous1_e__Union
Public Anonymous2 As _Anonymous2_e__Union
Public Anonymous3 As _Anonymous3_e__Union
Public Anonymous4 As _Anonymous4_e__Union
Public Anonymous5 As _Anonymous5_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDCOMPBUFFERINFO
Public dwSize As UInteger
Public dwNumCompBuffers As UInteger
Public dwWidthToCreate As UInteger
Public dwHeightToCreate As UInteger
Public dwBytesToAllocate As UInteger
Public ddCompCaps As DDSCAPS2
Public ddPixelFormat As DDPIXELFORMAT
End Structureimport ctypes
from ctypes import wintypes
class DDSCAPS2(ctypes.Structure):
_fields_ = [
("dwCaps", wintypes.DWORD),
("dwCaps2", wintypes.DWORD),
("dwCaps3", wintypes.DWORD),
("Anonymous", _Anonymous_e__Union),
]
class DDPIXELFORMAT(ctypes.Structure):
_fields_ = [
("dwSize", wintypes.DWORD),
("dwFlags", wintypes.DWORD),
("dwFourCC", wintypes.DWORD),
("Anonymous1", _Anonymous1_e__Union),
("Anonymous2", _Anonymous2_e__Union),
("Anonymous3", _Anonymous3_e__Union),
("Anonymous4", _Anonymous4_e__Union),
("Anonymous5", _Anonymous5_e__Union),
]
class DDCOMPBUFFERINFO(ctypes.Structure):
_fields_ = [
("dwSize", wintypes.DWORD),
("dwNumCompBuffers", wintypes.DWORD),
("dwWidthToCreate", wintypes.DWORD),
("dwHeightToCreate", wintypes.DWORD),
("dwBytesToAllocate", wintypes.DWORD),
("ddCompCaps", DDSCAPS2),
("ddPixelFormat", DDPIXELFORMAT),
]#[repr(C)]
pub struct DDSCAPS2 {
pub dwCaps: u32,
pub dwCaps2: u32,
pub dwCaps3: u32,
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct DDPIXELFORMAT {
pub dwSize: u32,
pub dwFlags: u32,
pub dwFourCC: u32,
pub Anonymous1: _Anonymous1_e__Union,
pub Anonymous2: _Anonymous2_e__Union,
pub Anonymous3: _Anonymous3_e__Union,
pub Anonymous4: _Anonymous4_e__Union,
pub Anonymous5: _Anonymous5_e__Union,
}
#[repr(C)]
pub struct DDCOMPBUFFERINFO {
pub dwSize: u32,
pub dwNumCompBuffers: u32,
pub dwWidthToCreate: u32,
pub dwHeightToCreate: u32,
pub dwBytesToAllocate: u32,
pub ddCompCaps: DDSCAPS2,
pub ddPixelFormat: DDPIXELFORMAT,
}import "golang.org/x/sys/windows"
type DDSCAPS2 struct {
dwCaps uint32
dwCaps2 uint32
dwCaps3 uint32
Anonymous _Anonymous_e__Union
}
type DDPIXELFORMAT struct {
dwSize uint32
dwFlags uint32
dwFourCC uint32
Anonymous1 _Anonymous1_e__Union
Anonymous2 _Anonymous2_e__Union
Anonymous3 _Anonymous3_e__Union
Anonymous4 _Anonymous4_e__Union
Anonymous5 _Anonymous5_e__Union
}
type DDCOMPBUFFERINFO struct {
dwSize uint32
dwNumCompBuffers uint32
dwWidthToCreate uint32
dwHeightToCreate uint32
dwBytesToAllocate uint32
ddCompCaps DDSCAPS2
ddPixelFormat DDPIXELFORMAT
}type
DDSCAPS2 = record
dwCaps: DWORD;
dwCaps2: DWORD;
dwCaps3: DWORD;
Anonymous: _Anonymous_e__Union;
end;
DDPIXELFORMAT = record
dwSize: DWORD;
dwFlags: DWORD;
dwFourCC: DWORD;
Anonymous1: _Anonymous1_e__Union;
Anonymous2: _Anonymous2_e__Union;
Anonymous3: _Anonymous3_e__Union;
Anonymous4: _Anonymous4_e__Union;
Anonymous5: _Anonymous5_e__Union;
end;
DDCOMPBUFFERINFO = record
dwSize: DWORD;
dwNumCompBuffers: DWORD;
dwWidthToCreate: DWORD;
dwHeightToCreate: DWORD;
dwBytesToAllocate: DWORD;
ddCompCaps: DDSCAPS2;
ddPixelFormat: DDPIXELFORMAT;
end;const DDSCAPS2 = extern struct {
dwCaps: u32,
dwCaps2: u32,
dwCaps3: u32,
Anonymous: _Anonymous_e__Union,
};
const DDPIXELFORMAT = extern struct {
dwSize: u32,
dwFlags: u32,
dwFourCC: u32,
Anonymous1: _Anonymous1_e__Union,
Anonymous2: _Anonymous2_e__Union,
Anonymous3: _Anonymous3_e__Union,
Anonymous4: _Anonymous4_e__Union,
Anonymous5: _Anonymous5_e__Union,
};
const DDCOMPBUFFERINFO = extern struct {
dwSize: u32,
dwNumCompBuffers: u32,
dwWidthToCreate: u32,
dwHeightToCreate: u32,
dwBytesToAllocate: u32,
ddCompCaps: DDSCAPS2,
ddPixelFormat: DDPIXELFORMAT,
};type
DDSCAPS2 {.bycopy.} = object
dwCaps: uint32
dwCaps2: uint32
dwCaps3: uint32
Anonymous: _Anonymous_e__Union
DDPIXELFORMAT {.bycopy.} = object
dwSize: uint32
dwFlags: uint32
dwFourCC: uint32
Anonymous1: _Anonymous1_e__Union
Anonymous2: _Anonymous2_e__Union
Anonymous3: _Anonymous3_e__Union
Anonymous4: _Anonymous4_e__Union
Anonymous5: _Anonymous5_e__Union
DDCOMPBUFFERINFO {.bycopy.} = object
dwSize: uint32
dwNumCompBuffers: uint32
dwWidthToCreate: uint32
dwHeightToCreate: uint32
dwBytesToAllocate: uint32
ddCompCaps: DDSCAPS2
ddPixelFormat: DDPIXELFORMATstruct DDSCAPS2
{
uint dwCaps;
uint dwCaps2;
uint dwCaps3;
_Anonymous_e__Union Anonymous;
}
struct DDPIXELFORMAT
{
uint dwSize;
uint dwFlags;
uint dwFourCC;
_Anonymous1_e__Union Anonymous1;
_Anonymous2_e__Union Anonymous2;
_Anonymous3_e__Union Anonymous3;
_Anonymous4_e__Union Anonymous4;
_Anonymous5_e__Union Anonymous5;
}
struct DDCOMPBUFFERINFO
{
uint dwSize;
uint dwNumCompBuffers;
uint dwWidthToCreate;
uint dwHeightToCreate;
uint dwBytesToAllocate;
DDSCAPS2 ddCompCaps;
DDPIXELFORMAT ddPixelFormat;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DDCOMPBUFFERINFO サイズ: 68 バイト(x86)
dim st, 17 ; 4byte整数×17(構造体サイズ 68 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwNumCompBuffers : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwWidthToCreate : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwHeightToCreate : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwBytesToAllocate : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ddCompCaps : DDSCAPS2 (+20, 16byte) varptr(st)+20 を基点に操作(16byte:入れ子/配列)
; ddPixelFormat : DDPIXELFORMAT (+36, 32byte) varptr(st)+36 を基点に操作(32byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DDCOMPBUFFERINFO サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwNumCompBuffers : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwWidthToCreate : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwHeightToCreate : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwBytesToAllocate : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ddCompCaps : DDSCAPS2 (+20, 16byte) varptr(st)+20 を基点に操作(16byte:入れ子/配列)
; ddPixelFormat : DDPIXELFORMAT (+40, 40byte) varptr(st)+40 を基点に操作(40byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global DDSCAPS2
#field int dwCaps
#field int dwCaps2
#field int dwCaps3
#field byte Anonymous 4
#endstruct
#defstruct global DDPIXELFORMAT
#field int dwSize
#field int dwFlags
#field int dwFourCC
#field byte Anonymous1 4
#field byte Anonymous2 4
#field byte Anonymous3 8
#field byte Anonymous4 4
#field byte Anonymous5 4
#endstruct
#defstruct global DDCOMPBUFFERINFO
#field int dwSize
#field int dwNumCompBuffers
#field int dwWidthToCreate
#field int dwHeightToCreate
#field int dwBytesToAllocate
#field DDSCAPS2 ddCompCaps
#field DDPIXELFORMAT ddPixelFormat
#endstruct
stdim st, DDCOMPBUFFERINFO ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize