FineKernelToolKit 4.3.0
読み取り中…
検索中…
一致する文字列を見つけられません
Shape.h
[詳解]
1#if !defined(__FK_SHAPE_BASE_HEADER__)
2#define __FK_SHAPE_BASE_HEADER__
3
4#include <FK/Base.h>
5#include <FK/Palette.h>
6#include <FK/Attribute.h>
7#include <FK/Vector.h>
8#include <FK/OpenGL.hh>
9#include <map>
10#include <functional>
11
12namespace FK {
13
14#if !defined(FK_DOXYGEN_USER_PROCESS)
15 using shapeAttrI = std::tuple<int, int, std::vector<int> *>;
16 using shapeAttrF = std::tuple<int, int, std::vector<float> *>;
17
18 using shapeMapI = std::map<std::string, shapeAttrI>;
19 using shapeMapF = std::map<std::string, shapeAttrF>;
20#endif
21
35
37
43
44 class fk_Shape: public fk_Attribute {
45
46#if !defined(FK_DOXYGEN_USER_PROCESS)
47 class Member {
48 public:
49 GLuint pointVAO, lineVAO, faceVAO;
50
51 shapeMapI attrMapI;
52 shapeMapF attrMapF;
53
54 bool vboInitFlg;
55
56 std::map<std::string, bool> attrModify;
57
58 std::map<std::string, std::unique_ptr<std::vector<int>>> intSelf;
59 std::map<std::string, std::unique_ptr<std::vector<float>>> floatSelf;
60
61 Member(void);
62 };
63#endif
64
65 public:
66
67#if !defined(FK_DOXYGEN_USER_PROCESS)
68 static constexpr int ALIVE = 1;
69 static constexpr int DEAD = 0;
70#endif
74 virtual ~fk_Shape();
75
77
84
86
120 void setShaderAttribute(std::string name, int dim,
121 std::vector<int> *array, bool self = false);
122
124
158 void setShaderAttribute(std::string name, int dim,
159 std::vector<float> *array, bool self = false);
160
162
187 void setShaderAttribute(std::string name, int dim, std::vector<fk_Vector> *array);
188
190
214 void setShaderAttribute(std::string name, int dim, std::vector<fk_TexCoord> *array);
215
217
242 void setShaderAttribute(std::string name, int dim, std::vector<fk_HVector> *array);
243
245
260 void modifyAttribute(std::string name);
261
262#if !defined(FK_OLD_NONSUPPORT) && !defined(FK_DOXYGEN_USER_PROCESS)
263 // 廃止関数群
264 fk_Palette * getPaletteData(void);
265 void clearMaterial(void);
266 void setObjMaterialID(int ID);
267 void pushPalette(fk_Material &mat);
268 void setPalette(fk_Material &mat, int ID);
269 int getObjMaterialID(void);
270 int getPaletteSize(void);
271 fk_Material * getMaterial(int id);
272 std::vector<fk_Material> * getMaterialVector(void);
273 void setMaterialMode(fk_MaterialMode mode);
274 fk_MaterialMode getMaterialMode(void);
275#endif
276
277#if !defined(FK_DOXYGEN_USER_PROCESS)
278 // 非公開関数群
279 void FinishSetVBO(void);
280 virtual void ForceUpdateAttr(void);
281 std::function<void(void)> FlushAttr;
282
283 void SetPaletteData(fk_Palette *pal);
284 void setPaletteData(fk_Palette *pal);
285
286 void SetPointVAO(GLuint);
287 void SetLineVAO(GLuint);
288 void SetFaceVAO(GLuint);
289 GLuint GetPointVAO(void);
290 GLuint GetLineVAO(void);
291 GLuint GetFaceVAO(void);
292
293 void DefineVBO(void);
294 void BindShaderBuffer(std::map<std::string, int> *);
295
296 static GLuint GenBuffer(void);
297 static void DeleteBuffer(GLuint);
298
299 // シェーダー変数名: 頂点座標
300 static const std::string vertexName;
301 static const std::string normalName;
302
303 // シェーダー変数名: 頂点モデル色
304 static const std::string pointModelColorName;
305 static const std::string pointElementColorName;
306 static const std::string pointElementAliveName;
307
308 static const std::string lineModelColorName;
309 static const std::string lineElementColorName;
310 static const std::string lineElementAliveName;
311
312 static const std::string curveModelColorName;
313
314 // シェーダー変数名: 頂点サイズ
315 static const std::string pointModelSizeName;
316
317 // シェーダー変数名: テクスチャ座標
318 static const std::string texCoordName;
319
320 // シェーダー変数名: 曲線曲面
321 static const std::string ctrlPosName;
322 static const std::string degreeName;
323 static const std::string geomDivName;
324#endif
325
326 private:
327 std::unique_ptr<Member> _m;
328
329 void DeleteMapI(std::string);
330 void DeleteMapF(std::string);
331
332 protected:
333#if !defined(FK_DOXYGEN_USER_PROCESS)
334 fk_RealShapeType realType;
335#endif
336 };
337}
338
339#endif // !__FK_SHAPE_BASE_HEADER__
340
341/****************************************************************************
342 *
343 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
344 *
345 * Redistribution and use in source and binary forms,
346 * with or without modification, are permitted provided that the
347 * following conditions are met:
348 *
349 * - Redistributions of source code must retain the above
350 * copyright notice, this list of conditions and the
351 * following disclaimer.
352 *
353 * - Redistributions in binary form must reproduce the above
354 * copyright notice, this list of conditions and the
355 * following disclaimer in the documentation and/or
356 * other materials provided with the distribution.
357 *
358 * - Neither the name of the copyright holders nor the names
359 * of its contributors may be used to endorse or promote
360 * products derived from this software without specific
361 * prior written permission.
362 *
363 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
364 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
365 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
366 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
367 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
368 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
369 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
370 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
371 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
372 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
373 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
374 * POSSIBILITY OF SUCH DAMAGE.
375 *
376 ****************************************************************************/
377/****************************************************************************
378 *
379 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
380 *
381 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
382 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
383 *
384 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
385 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
386 *
387 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
388 * および下記免責条項を含めること。
389 *
390 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
391 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
392 * 含めること。
393 *
394 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
395 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
396 * コントリビューターの名前を使用してはならない。
397 *
398 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
399 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
400 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
401 * に限定されない、いかなる保証もないものとします。著作権者もコン
402 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
403 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
404 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
405 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
406 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
407 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
408 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
409 * ついて、一切責任を負わないものとします。
410 *
411 ****************************************************************************/
fk_Attribute(void)
コンストラクタ
マテリアル(質感)を管理するクラス
Definition Material.h:40
マテリアルパレットを管理するクラス
Definition Palette.h:27
void setShaderAttribute(std::string name, int dim, std::vector< fk_HVector > *array)
シェーダー内 attribute 変数設定関数5
void modifyAttribute(std::string name)
attribute 変数更新関数
void setShaderAttribute(std::string name, int dim, std::vector< fk_Vector > *array)
シェーダー内 attribute 変数設定関数3
fk_RealShapeType getRealShapeType(void)
形状データ構造取得関数
void setShaderAttribute(std::string name, int dim, std::vector< float > *array, bool self=false)
シェーダー内 attribute 変数設定関数2
void setShaderAttribute(std::string name, int dim, std::vector< fk_TexCoord > *array)
シェーダー内 attribute 変数設定関数4
void setShaderAttribute(std::string name, int dim, std::vector< int > *array, bool self=false)
シェーダー内 attribute 変数設定関数1
virtual ~fk_Shape()
デストラクタ
fk_Shape(fk_Type=fk_Type::SHAPE)
コンストラクタ
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
fk_RealShapeType
形状データの具体的なデータ構造を表す列挙型
Definition Shape.h:23
@ OTHER
その他
Definition Shape.h:33
@ IFS
fk_IndexFaceSet ベース
Definition Shape.h:24
fk_Type
オブジェクトインスタンスのタイプを表す列挙型
Definition Base.h:43
@ CURVE
fk_Curve 型
Definition Base.h:63
@ LINE
fk_Line 型
Definition Base.h:51
@ SURFACE
fk_Surface 型
Definition Base.h:67
@ TEXTURE
fk_Texture 型
Definition Base.h:73
@ POINT
fk_Point 型
Definition Base.h:53
@ SOLID
fk_Solid 型
Definition Base.h:96
@ GRAPH
fk_Graph 型
Definition Base.h:100
@ SHAPE
fk_Shape 型
Definition Base.h:49
@ LIGHT
fk_Light 型
Definition Base.h:62
fk_MaterialMode
マテリアルモード型
Definition Palette.h:11