1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     gfx_ResVertex.h
4 
5   Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Revision: 19618 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NW_GFX_RESVERTEX_H_
17 #define NW_GFX_RESVERTEX_H_
18 
19 #include <nw/ut/ut_ResUtil.h>
20 #include <nw/ut/ut_ResDictionary.h>
21 #include <nw/ut/ut_ResDeclMacros.h>
22 #include <nw/ut/ut_ResArrayTypes.h>
23 #include <nw/gfx/res/gfx_ResTypeInfo.h>
24 #include <nw/ut/ut_ResPrimitive.h>
25 
26 namespace nw {
27 namespace gfx {
28 namespace res {
29 
30 //! @details :private
31 struct ResVertexAttributeData
32 {
33     // TODO: こちらの定義は削除予定。
34     enum VertexType
35     {
36         FLAG_VERTEX_PARAM = 0x1,
37         FLAG_INTERLEAVE = 0x2
38     };
39 
40     nw::ut::ResTypeInfo typeInfo;
41     nw::ut::ResS32 m_Usage;
42     nw::ut::ResU32 m_Flags;
43 };
44 
45 class ResVertexStream;
46 class ResVertexParamAttribute;
47 
48 //--------------------------------------------------------------------------
49 //! @brief 頂点属性を表すバイナリリソースの基底クラスです。
50 //---------------------------------------------------------------------------
51 class ResVertexAttribute : public nw::ut::ResCommon< ResVertexAttributeData >
52 {
53 public:
54     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexAttribute) };
55     enum { SIGNATURE = NW_RES_SIGNATURE32('VATR') };
56 
57     enum VertexType
58     {
59         FLAG_VERTEX_PARAM = 0x1,
60         FLAG_INTERLEAVE = 0x2
61     };
62 
63     enum VertexAttributeUsage
64     {
65         USAGE_POSITION,
66         USAGE_NORMAL,
67         USAGE_TANGENT,
68         USAGE_COLOR,
69         USAGE_TEXTURECOODINATE0,
70         USAGE_TEXTURECOODINATE1,
71         USAGE_TEXTURECOODINATE2,
72         USAGE_BONEINDEX,
73         USAGE_BONEWEIGHT,
74         USAGE_USERATTRIBUTE0,
75         USAGE_USERATTRIBUTE1,
76         USAGE_USERATTRIBUTE2,
77         USAGE_USERATTRIBUTE3,
78         USAGE_USERATTRIBUTE4,
79         USAGE_USERATTRIBUTE5,
80         USAGE_USERATTRIBUTE6,
81         USAGE_USERATTRIBUTE7,
82         USAGE_USERATTRIBUTE8,
83         USAGE_USERATTRIBUTE9,
84         USAGE_USERATTRIBUTE10,
85         USAGE_USERATTRIBUTE11,
86         USAGE_INTERLEAVE,
87         USAGE_QUANTITY,
88         USAGE_NONE
89     };
90 
91     NW_RES_CTOR( ResVertexAttribute )
92 
93 
94     //---------------------------------------------------------------------------
95     //! @fn           void SetUsage(s32 value)
96     //! @brief        頂点属性の用途を設定します。
97     //---------------------------------------------------------------------------
98     //---------------------------------------------------------------------------
99     //! @fn           void SetFlags(u32 value)
100     //! @brief        フラグの値を設定します。
101     //---------------------------------------------------------------------------
102     //---------------------------------------------------------------------------
103     //! @fn           s32 GetUsage() const
104     //! @brief        頂点属性の用途を取得します。
105     //---------------------------------------------------------------------------
106     //---------------------------------------------------------------------------
107     //! @fn           u32 GetFlags() const
108     //! @brief        フラグの値を取得します。
109     //---------------------------------------------------------------------------
110     NW_RES_FIELD_PRIMITIVE_DECL( s32, Usage ) // GetUsage(), SetUsage()
111     NW_RES_FIELD_PRIMITIVE_DECL( u32, Flags ) // GetFlags(), SetFlags()
112 
113     //! @brief 頂点属性の初期化処理をおこないます。
114     void    Setup();
115 
116     //! @brief 頂点属性の後始末をおこないます。
117     void    Cleanup();
118 
119     //---------------------------------------------------------------------------
120     //! @brief        インスタンスの型情報を取得します。
121     //!
122     //! @return       型情報です。
123     //---------------------------------------------------------------------------
GetTypeInfo()124     nw::ut::ResTypeInfo     GetTypeInfo() const { return ref().typeInfo; }
125 };
126 typedef nw::ut::ResArrayClass<ResVertexAttribute>::type  ResVertexAttributeArray;
127 
128 
129 //! @details :private
130 struct ResVertexParamAttributeData : public ResVertexAttributeData
131 {
132     nw::ut::ResU32 m_FormatType;
133     nw::ut::ResU8 m_Dimension;
134     u8 _padding_0[3];
135     nw::ut::ResF32 m_Scale;
136     nw::ut::Offset m_AttributeTableCount;
137     nw::ut::Offset toAttributeTable;
138 };
139 
140 //--------------------------------------------------------------------------
141 //! @brief パラメータによる頂点属性を表すバイナリリソースクラスです。
142 //---------------------------------------------------------------------------
143 class ResVertexParamAttribute : public ResVertexAttribute
144 {
145 public:
146     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexParamAttribute) };
147     enum { SIGNATURE = NW_RES_SIGNATURE32('VAPM') };
148 
149     NW_RES_CTOR_INHERIT( ResVertexParamAttribute, ResVertexAttribute )
150 
151     //---------------------------------------------------------------------------
152     //! @fn           void SetScale(f32 value)
153     //! @brief        スケール値を設定します。
154     //---------------------------------------------------------------------------
155     //---------------------------------------------------------------------------
156     //! @fn           void SetFormatType(u32 value)
157     //! @brief        フォーマットの種類を設定します。
158     //---------------------------------------------------------------------------
159     //---------------------------------------------------------------------------
160     //! @fn           void SetDimension(u8 value)
161     //! @brief        次元数を設定します。
162     //---------------------------------------------------------------------------
163     //---------------------------------------------------------------------------
164     //! @fn           void SetAttribute(int idx, f32 value)
165     //! @brief        属性のリストに要素を設定します。
166     //---------------------------------------------------------------------------
167     //---------------------------------------------------------------------------
168     //! @fn           f32 GetScale() const
169     //! @brief        スケール値を取得します。
170     //---------------------------------------------------------------------------
171     //---------------------------------------------------------------------------
172     //! @fn           u32 GetFormatType() const
173     //! @brief        フォーマットの種類を取得します。
174     //---------------------------------------------------------------------------
175     //---------------------------------------------------------------------------
176     //! @fn           u8 GetDimension() const
177     //! @brief        次元数を取得します。
178     //---------------------------------------------------------------------------
179     //---------------------------------------------------------------------------
180     //! @fn           s32 GetAttributeCount() const
181     //! @brief        属性の要素数を取得します。
182     //---------------------------------------------------------------------------
183     //---------------------------------------------------------------------------
184     //! @fn           f32 GetAttribute(int idx) const
185     //! @brief        属性を取得します。
186     //---------------------------------------------------------------------------
187     NW_RES_FIELD_PRIMITIVE_DECL( u32, FormatType )     // GetFormatType(), SetFormatType()
188     NW_RES_FIELD_PRIMITIVE_DECL( u8, Dimension )       // GetDimension(), SetDimension()
189     NW_RES_FIELD_PRIMITIVE_DECL( f32, Scale )          // GetScale(), SetScale()
190     NW_RES_FIELD_PRIMITIVE_LIST_DECL( f32, Attribute ) // GetAttribute(), GetAttribute(int idx), GetAttributeCount()
191 
192     //! @brief 頂点属性の初期化処理をおこないます。
193     void    Setup();
194 
195     //! @brief 頂点属性の後始末をおこないます。
196     void    Cleanup();
197 };
198 typedef nw::ut::ResArrayClass<ResVertexParamAttribute>::type ResVertexParamAttributeArray;
199 
200 
201 struct ResVertexStreamBaseData : public ResVertexAttributeData
202 {
203     enum
204     {
205         AREA_NO_MALLOC = 0,
206         AREA_FCRAM = NN_GX_MEM_FCRAM,
207         AREA_VRAMA = NN_GX_MEM_VRAMA,
208         AREA_VRAMB = NN_GX_MEM_VRAMB
209     };
210 
211     nw::ut::ResU32 m_BufferObject;
212     nw::ut::ResU32 m_LocationFlag;
213     nw::ut::ResS32 m_StreamTableCount;
214     nw::ut::Offset toStreamTable;
215     u32            m_LocationAddress;
216     u32            m_MemoryArea;
217 };
218 
219 //! @details :private
220 struct ResVertexStreamData : public ResVertexStreamBaseData
221 {
222     nw::ut::ResU32 m_FormatType;
223     nw::ut::ResU8 m_Dimension;
224     u8 _padding_0[3];
225     nw::ut::ResF32 m_Scale;
226     nw::ut::ResU32 m_Offset;
227 };
228 
229 struct ResInterleavedVertexStreamData : public ResVertexStreamBaseData
230 {
231     nw::ut::ResU32 m_Stride;
232     nw::ut::ResS32 m_VertexStreamsTableCount;
233     nw::ut::Offset toVertexStreamsTable;
234 };
235 
236 
237 //--------------------------------------------------------------------------
238 //! @brief 頂点ストリームによる頂点属性を表すバイナリのベースクラスです。
239 //---------------------------------------------------------------------------
240 class ResVertexStreamBase : public ResVertexAttribute
241 {
242 public:
243     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexStreamBase) };
244     enum { SIGNATURE = NW_RES_SIGNATURE32('VSTB') };
245 
NW_RES_CTOR_INHERIT(ResVertexStreamBase,ResVertexAttribute)246     NW_RES_CTOR_INHERIT( ResVertexStreamBase, ResVertexAttribute )
247 
248     //---------------------------------------------------------------------------
249     //! @fn           void SetBufferObject(u32 value)
250     //! @brief        バッファオブジェクトを設定します。
251     //---------------------------------------------------------------------------
252     //---------------------------------------------------------------------------
253     //! @fn           u32 GetBufferObject() const
254     //! @brief        バッファオブジェクトを取得します。
255     //---------------------------------------------------------------------------
256     NW_RES_FIELD_PRIMITIVE_DECL( u32, BufferObject ) // GetBufferObject(), SetBufferObject()
257 
258     //---------------------------------------------------------------------------
259     //! @fn           u32 GetLocationFlag() const
260     //! @brief        ロケーションフラグを取得します。
261     //---------------------------------------------------------------------------
262     //---------------------------------------------------------------------------
263     //! @fn           void SetLocationFlag(u32 value)
264     //! @brief        ロケーションフラグを設定します。
265     //---------------------------------------------------------------------------
266     NW_RES_FIELD_PRIMITIVE_DECL( u32, LocationFlag )  // GetLocationFlag(), SetLocationFlag()
267 
268     //---------------------------------------------------------------------------
269     //! @fn           s32 GetStreamCount() const
270     //! @brief        ストリームのバイト数を取得します。
271     //---------------------------------------------------------------------------
272     //---------------------------------------------------------------------------
273     //! @fn           const u8* GetStream() const
274     //! @brief        ストリームを取得します。
275     //---------------------------------------------------------------------------
276     NW_RES_FIELD_PRIMITIVE_LIST_DECL( u8, Stream )   // GetStream(), GetStream(int idx), GetStreamCount()
277 
278     //---------------------------------------------------------------------------
279     //! @brief        コピーされた頂点バッファのアドレスを取得します。
280     //!
281     //! @return       コピーされた頂点バッファの論理アドレスです。
282     //---------------------------------------------------------------------------
283     u32 GetLocationAddress() const { return ref().m_LocationAddress; }
284 
285     //---------------------------------------------------------------------------
286     //! @brief        コピーされた頂点バッファのアドレスを設定します。
287     //!
288     //! @param[in]    address コピーされた頂点バッファの論理アドレスです。
289     //---------------------------------------------------------------------------
SetLocationAddress(u32 address)290     void SetLocationAddress(u32 address) { ref().m_LocationAddress = address; }
SetLocationAddress(const void * address)291     void SetLocationAddress(const void* address) { ref().m_LocationAddress = reinterpret_cast<u32>(address); }
292 
293     //---------------------------------------------------------------------------
294     //! @brief        GPU から参照されるイメージのアドレスを取得します。
295     //!
296     //! @details      LocationAddess が設定されている場合はそのアドレスを使用し、
297     //!               LocationAddess が NULL の場合には、Stream のアドレスを直接 GPU から参照します。
298     //!
299     //! @return       GPU から参照されるイメージのアドレスです。
300     //---------------------------------------------------------------------------
GetImageAddress()301     u32 GetImageAddress() const
302     {
303         u32 locationAddress = this->GetLocationAddress();
304 
305         if ( locationAddress )
306         {
307             return locationAddress;
308         }
309         else
310         {
311             return reinterpret_cast<u32>( this->GetStream() );
312         }
313     }
314 };
315 
316 
317 //--------------------------------------------------------------------------
318 //! @brief 頂点ストリームによる頂点属性を表すバイナリリソースクラスです。
319 //---------------------------------------------------------------------------
320 class ResVertexStream : public ResVertexStreamBase
321 {
322 public:
323     enum { TYPE_INFO = NW_GFX_RES_TYPE_INFO(ResVertexStream) };
324     enum { SIGNATURE = NW_RES_SIGNATURE32('VSTM') };
325 
326     NW_RES_CTOR_INHERIT( ResVertexStream, ResVertexStreamBase )
327 
328     //---------------------------------------------------------------------------
329     //! @fn           void SetFormatType(u32 value)
330     //! @brief        フォーマットの種類を設定します。
331     //---------------------------------------------------------------------------
332     //---------------------------------------------------------------------------
333     //! @fn           u32 GetFormatType() const
334     //! @brief        フォーマットの種類を取得します。
335     //---------------------------------------------------------------------------
336     NW_RES_FIELD_PRIMITIVE_DECL( u32, FormatType )   // GetFormatType(), SetFormatType()
337 
338     //---------------------------------------------------------------------------
339     //! @fn           u8 GetDimension() const
340     //! @brief        次元数を取得します。
341     //---------------------------------------------------------------------------
342     //---------------------------------------------------------------------------
343     //! @fn           void SetDimension(u8 value)
344     //! @brief        次元数を設定します。
345     //---------------------------------------------------------------------------
346     NW_RES_FIELD_PRIMITIVE_DECL( u8, Dimension )     // GetDimension(), SetDimension()
347 
348     //---------------------------------------------------------------------------
349     //! @fn           void SetScale(f32 value)
350     //! @brief        スケール値を設定します。
351     //---------------------------------------------------------------------------
352     //---------------------------------------------------------------------------
353     //! @fn           f32 GetScale() const
354     //! @brief        スケール値を取得します。
355     //---------------------------------------------------------------------------
356     NW_RES_FIELD_PRIMITIVE_DECL( f32, Scale )        // GetScale(), SetScale()
357 
358     //---------------------------------------------------------------------------
359     //! @fn           void SetOffset(u32 value)
360     //! @brief        インターリーブ形式の場合のオフセット情報を設定します。
361     //---------------------------------------------------------------------------
362     //---------------------------------------------------------------------------
363     //! @fn           u32 GetOffset() const
364     //! @brief        インターリーブ形式の場合のオフセット情報を取得します。
365     //---------------------------------------------------------------------------
366     NW_RES_FIELD_PRIMITIVE_DECL( u32, Offset )
367 
368     //! @brief 頂点ストリームの初期化処理をおこないます。
369     void    Setup();
370 
371     //! @brief 頂点属性の後始末をおこないます。
372     void    Cleanup();
373 };
374 typedef nw::ut::ResArrayClass<ResVertexStream>::type  ResVertexStreamArray;
375 
376 //--------------------------------------------------------------------------
377 //! @brief インターリーブ形式の頂点ストリームを表すバイナリリソースクラスです。
378 //---------------------------------------------------------------------------
379 class ResInterleavedVertexStream : public ResVertexStreamBase
380 {
381 public:
382     NW_RES_CTOR_INHERIT( ResInterleavedVertexStream, ResVertexStreamBase )
383 
384     //---------------------------------------------------------------------------
385     //! @fn           u32 GetStride() const
386     //! @brief        インターリーブ形式の1頂点あたりの頂点サイズを取得します。
387     //---------------------------------------------------------------------------
388     //---------------------------------------------------------------------------
389     //! @fn           void SetStride(u32 value)
390     //! @brief        インターリーブ形式の1頂点あたりの頂点サイズを設定します。
391     //---------------------------------------------------------------------------
392     NW_RES_FIELD_PRIMITIVE_DECL( u32, Stride )
393 
394     //---------------------------------------------------------------------------
395     //! @fn           s32 GetVertexStreamsCount() const
396     //! @brief        インターリーブを構成する頂点属性の集合の要素数を取得します。
397     //---------------------------------------------------------------------------
398     //---------------------------------------------------------------------------
399     //! @fn           ResVertexStream GetVertexStreams(int idx)
400     //! @brief        インターリーブを構成する頂点属性の集合を取得します。
401     //---------------------------------------------------------------------------
402     NW_RES_FIELD_CLASS_LIST_DECL( ResVertexStream, VertexStreams )
403 
404     //! @brief 頂点ストリームの初期化処理をおこないます。
405     void    Setup();
406 
407     //! @brief 頂点属性の後始末をおこないます。
408     void    Cleanup();
409 };
410 
411 
412 //! @details :private
413 struct ResIndexStreamData
414 {
415     enum
416     {
417         AREA_NO_MALLOC = 0,
418         AREA_FCRAM = NN_GX_MEM_FCRAM,
419         AREA_VRAMA = NN_GX_MEM_VRAMA,
420         AREA_VRAMB = NN_GX_MEM_VRAMB
421     };
422 
423     nw::ut::ResU32 m_FormatType;
424     nw::ut::ResU8  m_PrimitiveMode;
425     bool  m_IsVisible;
426     u8 _padding_0[2];
427     nw::ut::ResS32 m_StreamTableCount;
428     nw::ut::Offset toStreamTable;
429     nw::ut::ResU32 m_BufferObject;
430     nw::ut::ResU32 m_LocationFlag;
431 
432     void* m_CommandCache;
433     s32   m_CommandCacheSize;
434     u32   m_LocationAddress;
435     u32   m_MemoryArea;
436 
437     nw::ut::Offset toBoundingVolume;
438 };
439 
440 //--------------------------------------------------------------------------
441 //! @brief 頂点インデックスストリームを表すバイナリリソースクラスです。
442 //---------------------------------------------------------------------------
443 class ResIndexStream : public nw::ut::ResCommon< ResIndexStreamData >
444 {
445 public:
NW_RES_CTOR(ResIndexStream)446     NW_RES_CTOR( ResIndexStream )
447 
448     //---------------------------------------------------------------------------
449     //! @fn           u32 GetFormatType() const
450     //! @brief        フォーマットの種類を取得します。
451     //---------------------------------------------------------------------------
452     //---------------------------------------------------------------------------
453     //! @fn           void SetFormatType(u32 value)
454     //! @brief        フォーマットの種類を設定します。
455     //---------------------------------------------------------------------------
456     NW_RES_FIELD_PRIMITIVE_DECL( u32, FormatType )   // GetFormatType(), SetFormatType()
457 
458     //---------------------------------------------------------------------------
459     //! @fn           u8 GetPrimitiveMode() const
460     //! @brief        プリミティブのモードを取得します。
461     //---------------------------------------------------------------------------
462     //---------------------------------------------------------------------------
463     //! @fn           void SetPrimitiveMode(u8 value)
464     //! @brief        プリミティブのモードを設定します。
465     //---------------------------------------------------------------------------
466     NW_RES_FIELD_PRIMITIVE_DECL( u8, PrimitiveMode ) // GetPrimitiveMode(), SetPrimitiveMode()
467 
468     //---------------------------------------------------------------------------
469     //! @fn           s32 GetStreamCount() const
470     //! @brief        ストリームの要素数を取得します。
471     //---------------------------------------------------------------------------
472     //---------------------------------------------------------------------------
473     //! @fn           u8 GetStream(int idx) const
474     //! @brief        ストリームを取得します。
475     //---------------------------------------------------------------------------
476     //---------------------------------------------------------------------------
477     //! @fn           void SetStream(int idx, u8 value)
478     //! @brief        ストリームのリストに要素を設定します。
479     //---------------------------------------------------------------------------
480     NW_RES_FIELD_PRIMITIVE_LIST_DECL( u8, Stream )   // GetStream(), GetStream(int idx), GetStreamCount()
481 
482     //---------------------------------------------------------------------------
483     //! @fn           u32 GetBufferObject() const
484     //! @brief        バッファオブジェクトを取得します。
485     //---------------------------------------------------------------------------
486     //---------------------------------------------------------------------------
487     //! @fn           void SetBufferObject(u32 value)
488     //! @brief        バッファオブジェクトを設定します。
489     //---------------------------------------------------------------------------
490     NW_RES_FIELD_PRIMITIVE_DECL( u32, BufferObject ) // GetBufferObject(), SetBufferObject()
491 
492     //---------------------------------------------------------------------------
493     //! @fn           u32 GetLocationFlag() const
494     //! @brief        ロケーションフラグを取得します。
495     //---------------------------------------------------------------------------
496     //---------------------------------------------------------------------------
497     //! @fn           void SetLocationFlag(u32 value)
498     //! @brief        ロケーションフラグを設定します。
499     //---------------------------------------------------------------------------
500     NW_RES_FIELD_PRIMITIVE_DECL( u32, LocationFlag )  // GetLocationFlag(), SetLocationFlag()
501 
502     //---------------------------------------------------------------------------
503     //! @fn           nw::ut::ResBoundingVolume GetBoundingVolume()
504     //! @brief        この機能は現状では実験仕様となります。将来的に仕様が変更になる可能性があります。
505     //!               境界情報を取得します。
506     //---------------------------------------------------------------------------
507     NW_RES_FIELD_CLASS_DECL( nw::ut::ResBoundingVolume, BoundingVolume )  // GetBoundingVolume()
508 
509     //---------------------------------------------------------------------------
510     //! @brief        コピーされた頂点バッファのアドレスを取得します。
511     //!
512     //! @return       コピーされた頂点バッファの論理アドレスです。
513     //---------------------------------------------------------------------------
514     u32 GetLocationAddress() const { return ref().m_LocationAddress; }
515 
516     //---------------------------------------------------------------------------
517     //! @brief        コピーされた頂点バッファのアドレスを設定します。
518     //!
519     //! @param[in]    address コピーされた頂点バッファの論理アドレスです。
520     //---------------------------------------------------------------------------
SetLocationAddress(u32 address)521     void SetLocationAddress(u32 address) { ref().m_LocationAddress = address; }
SetLocationAddress(const void * address)522     void SetLocationAddress(const void* address) { ref().m_LocationAddress = reinterpret_cast<u32>(address); }
523 
524     //---------------------------------------------------------------------------
525     //! @brief        GPU から参照されるイメージのアドレスを取得します。
526     //!
527     //! @details      LocationAddess が設定されている場合はそのアドレスを使用し、
528     //!               LocationAddess が NULL の場合には、Stream のアドレスを直接 GPU から参照します。
529     //!
530     //! @return       GPU から参照されるイメージのアドレスです。
531     //---------------------------------------------------------------------------
GetImageAddress()532     u32 GetImageAddress() const
533     {
534         u32 locationAddress = this->GetLocationAddress();
535 
536         if ( locationAddress )
537         {
538             return locationAddress;
539         }
540         else
541         {
542             return reinterpret_cast<u32>( this->GetStream() );
543         }
544     }
545 
546     //---------------------------------------------------------------------------
547     //! @fn           void SetVisible(bool value)
548     //! @brief        この機能は現状では実験仕様となります。将来的に仕様が変更になる可能性があります。
549     //!               表示するかどうかのフラグを設定します。
550     //---------------------------------------------------------------------------
551     //---------------------------------------------------------------------------
552     //! @fn           bool IsVisible() const
553     //! @brief        この機能は現状では実験仕様となります。将来的に仕様が変更になる可能性があります。
554     //!               表示するかどうかのフラグを取得します。
555     //---------------------------------------------------------------------------
556     NW_RES_FIELD_BOOL_PRIMITIVE_DECL( Visible )      // IsVisible(), SetVisible()
557 };
558 typedef nw::ut::ResArrayClass<ResIndexStream>::type  ResIndexStreamArray;
559 
560 } // namespace res
561 } // namespace gfx
562 } // namespace nw
563 
564 #endif // NW_GFX_RESVERTEX_H_
565