Win32 API 日本語リファレンス
ホームGraphics.DirectDraw › DDSCAPS

DDSCAPS

構造体
サイズx64: 4 バイト / x86: 4 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
dwCapsDWORD4+0+0

サーフェイスの機能を指定するフラグのセットを示します。このメンバーは、次のフラグの任意の組み合わせのビット単位の OR です。

フラグ 意味

DDSCAPS_3DDEVICE

このサーフェイスは 3D レンダリングに使用できます。アプリケーションはこのフラグを使用して、特定のヒープにしかレンダリングできないデバイスに対して、オフスクリーンサーフェイスが正しいヒープから割り当てられるようにできます。あるヒープに対してこのフラグが設定されている場合、サーフェイスはそのヒープからは割り当てられません。

DDSCAPS_ALLOCONLOAD

アプリケーションが IDirect3DTexture::Load メソッドを使用してサーフェイスをロードするまで、サーフェイス用のメモリは割り当てられません。

DDSCAPS_ALPHA

このサーフェイスはアルファ情報のみを含みます。

DDSCAPS_BACKBUFFER

このサーフェイスは、サーフェイスフリッピング構造のバックバッファーです。通常、この機能は DDSCAPS_FLIP フラグが使用されたときにアプリケーションの CreateSurface メソッドによって設定されます。この機能が設定されるのは、DDSCAPS_FRONTBUFFER サーフェイスの直前にあるサーフェイスだけです。その他のサーフェイスは、DDSCAPS_FLIP フラグの存在、アタッチ順序、および DDSCAPS_FRONTBUFFERDDSCAPS_BACKBUFFER の各機能が無いことによってバックバッファーとして識別されます。この機能がアプリケーションの CreateSurface メソッドに渡された場合は、単独のバックバッファーが作成されます。このメソッドの呼び出し後、このサーフェイスをフロントバッファー、別のバックバッファー、またはその両方にアタッチして、フリッピングサーフェイス構造を形成できます。詳細については、DirectX SDK の AddAttachedSurface メソッドを参照してください。DirectDraw は、フリッピング構造内の任意の数のサーフェイスをサポートします。

DDSCAPS_COMPLEX

複合サーフェイスが記述されています。複合サーフェイスでは複数のサーフェイスが作成されます。追加のサーフェイスはルートサーフェイスにアタッチされます。複合構造は、ルートを破棄することによってのみ破棄できます。

DDSCAPS_EXECUTEBUFFER

このサーフェイスは実行バッファーです。実行バッファーとは、Microsoft Direct3D のディスプレイリストを保持する、システムメモリまたはビデオメモリ上の連続した領域です。ドライバーは、ビデオメモリ内に実行バッファーを作成できることを示すためにこの機能ビットを報告します。Direct3D ランタイムはこのビットを検出すると、ドライバーに実行バッファーを要求できます。アプリケーションはこの機能ビットを検出できません。

DDSCAPS_FLIP

このサーフェイスは、サーフェイスフリッピング構造の一部です。この機能がアプリケーションの CreateSurface メソッドに渡されると、1 つのフロントバッファーと 1 つ以上のバックバッファーが作成されます。DirectDraw は、フロントバッファーサーフェイスに DDSCAPS_FRONTBUFFER ビットを設定し、フロントバッファーサーフェイスに隣接するサーフェイスに DDSCAPS_BACKBUFFER ビットを設定します。メソッド呼び出しを成功させるには、DDSURFACEDESC 構造体の dwBackBufferCount メンバーを 1 以上に設定しなければなりません。CreateSurface メソッドを使用して複数のサーフェイスを作成する場合は、常に DDSCAPS_COMPLEX 機能を設定しなければなりません。

DDSCAPS_FRONTBUFFER

このサーフェイスは、サーフェイスフリッピング構造のフロントバッファーです。このフラグは通常、DDSCAPS_FLIP 機能が設定されているときにアプリケーションの CreateSurface メソッドによって設定されます。この機能が CreateSurface メソッドに渡された場合は、単独のフロントバッファーが作成されます。このサーフェイスは DDSCAPS_FLIP 機能を持ちません。アプリケーションの AddAttachedSurface メソッドを使用して他のバックバッファーにアタッチし、フリッピング構造を形成できます。

DDSCAPS_HWCODEC

このサーフェイスは、ハードウェアによってストリームを展開できる必要があります。

DDSCAPS_LIVEVIDEO

このサーフェイスは、ライブビデオを受け取れる必要があります。

DDSCAPS_LOCALVIDMEM

このサーフェイスは、非ローカルディスプレイメモリではなく、真のローカルディスプレイメモリ上に存在します。このフラグを指定する場合は、DDSCAPS_VIDEOMEMORY も指定しなければなりません。このフラグは DDSCAPS_NONLOCALVIDMEM フラグと併用できません。

DDSCAPS_MIPMAP

このサーフェイスは、ミップマップの 1 つのレベルです。このサーフェイスは他の DDSCAPS_MIPMAP サーフェイスにアタッチされてミップマップを形成します。これは、複数のサーフェイスを作成してアプリケーションの AddAttachedSurface メソッドでアタッチすることにより明示的に行うことも、アプリケーションの CreateSurface メソッドにより暗黙的に行うこともできます。この機能を設定する場合は、DDSCAPS_TEXTURE も設定しなければなりません。

DDSCAPS_MODEX

このサーフェイスは、320x200 または 320x240 の Mode X サーフェイスです。この機能ビットが Microsoft Windows 2000 以降のドライバーによって設定されている場合、DirectDraw は無効になります。

DDSCAPS_NONLOCALVIDMEM

このサーフェイスは、真のローカルディスプレイメモリではなく、非ローカルディスプレイメモリ上に存在します。このフラグを指定する場合は、DDSCAPS_VIDEOMEMORY フラグも指定しなければなりません。これは DDSCAPS_LOCALVIDMEM フラグと併用できません。

DDSCAPS_OFFSCREENPLAIN

このサーフェイスは、オーバーレイ、テクスチャ、z バッファー、フロントバッファー、バックバッファー、アルファサーフェイスのいずれでもないオフスクリーンサーフェイスです。プレーンなサーフェイスを識別するために使用されます。

DDSCAPS_OVERLAY

このサーフェイスはオーバーレイです。このオーバーレイが表示されるかどうかは、現在プライマリサーフェイスにオーバーレイされているかどうかによって決まります。現時点でオーバーレイされているかどうかの判断には DDSCAPS_VISIBLE を使用できます。

DDSCAPS_OPTIMIZED

このフラグは現在実装されていません。

DDSCAPS_OWNDC

このサーフェイスは、長期間にわたってデバイスコンテキスト (DC) と関連付けられます。この機能ビットが Windows 2000 以降のドライバーによって設定されている場合、DirectDraw は無効になります。

DDSCAPS_PALETTE

このデバイスドライバーは、固有の DirectDrawPalette オブジェクトを作成してこのサーフェイスにアタッチすることを許可します。

DDSCAPS_PRIMARYSURFACE

このサーフェイスはプライマリサーフェイスです。現時点でユーザーに見えているものを表します。

DDSCAPS_PRIMARYSURFACELEFT

このサーフェイスは、左目用のプライマリサーフェイスです。現時点でユーザーの左目に見えているものを表します。このサーフェイスが作成されると、DDSCAPS_PRIMARYSURFACE 機能を持つサーフェイスは、ユーザーの右目に見えているものを表します。

DDSCAPS_STANDARDVGAMODE

このサーフェイスは、ModeX サーフェイスではなく標準 VGA モードのサーフェイスです。このフラグは DDSCAPS_MODEX フラグと組み合わせて使用できません。

DDSCAPS_SYSTEMMEMORY

このサーフェイスのメモリは、システムメモリから割り当てられました。この機能ビットが Windows 2000 以降のドライバーによって設定されている場合、DirectDraw は無効になります。

DDSCAPS_TEXTURE

このサーフェイスは 3D テクスチャとして使用できます。実際にその目的で使用されているかどうかを示すものではありません。

DDSCAPS_VIDEOMEMORY

このサーフェイスはディスプレイメモリ上に存在します。

DDSCAPS_VIDEOPORT

このサーフェイスは、ビデオポート拡張 (VPE) オブジェクトからデータを受け取ることができます。

DDSCAPS_VISIBLE

このサーフェイスに加えた変更は直ちに表示されます。プライマリサーフェイスでは常に設定され、オーバーレイ中のオーバーレイや、テクスチャリング中のテクスチャマップでも設定されます。

DDSCAPS_WRITEONLY

このサーフェイスには書き込みアクセスのみが許可されます。このサーフェイスからの読み取りアクセスは一般保護違反 (GPF) を発生させる可能性があり、また、このサーフェイスから読み取った結果に意味はありません。この機能ビットが Windows 2000 以降のドライバーによって設定されている場合、DirectDraw は無効になります。

DDSCAPS_ZBUFFER

このサーフェイスは z バッファーです。どのピクセルが可視で、どのピクセルが隠されるかを判断するために使用されるビット深度情報を含みます。z バッファーが含む情報は表示できません。

公式ドキュメント

DDSCAPS 構造体は、Microsoft DirectDraw サーフェイスオブジェクトの機能を定義します。

解説(Remarks)

この構造体は、ドライバーがサポートするサーフェイスの種類を報告するためにドライバーによって使用されます。また、作成するサーフェイスの種類を指定するために、アプリケーションによって設定されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// DDSCAPS  (x64 4 / x86 4 バイト)
typedef struct DDSCAPS {
    DWORD dwCaps;
} DDSCAPS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDSCAPS
{
    public uint dwCaps;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDSCAPS
    Public dwCaps As UInteger
End Structure
import ctypes
from ctypes import wintypes

class DDSCAPS(ctypes.Structure):
    _fields_ = [
        ("dwCaps", wintypes.DWORD),
    ]
#[repr(C)]
pub struct DDSCAPS {
    pub dwCaps: u32,
}
import "golang.org/x/sys/windows"

type DDSCAPS struct {
	dwCaps uint32
}
type
  DDSCAPS = record
    dwCaps: DWORD;
  end;
const DDSCAPS = extern struct {
    dwCaps: u32,
};
type
  DDSCAPS {.bycopy.} = object
    dwCaps: uint32
struct DDSCAPS
{
    uint dwCaps;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DDSCAPS サイズ: 4 バイト(x64)
dim st, 1    ; 4byte整数×1(構造体サイズ 4 / 4 切り上げ)
; dwCaps : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DDSCAPS
    #field int dwCaps
#endstruct

stdim st, DDSCAPS        ; NSTRUCT 変数を確保
st->dwCaps = 100
mes "dwCaps=" + st->dwCaps