FineKernelToolKit: FK/TriTexture.h ソースファイル

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
TriTexture.h
[詳解]
1#if !defined(__FK_TRI_TEXTURE_HEADER__)
2#define __FK_TRI_TEXTURE_HEADER__
3
4#include <FK/Texture.h>
5
6namespace FK {
7
9
28
29 class fk_TriTexture : public fk_Texture {
30#if !defined(FK_DOXYGEN_USER_PROCESS)
31 class Member {
32 public:
33 fk_Vector pos[3];
34 fk_TexCoord triTexCoord[3];
35 fk_FVecArray vertexPosition;
36 fk_FVecArray vertexNormal;
37
38 Member(void);
39 };
40#endif
41
42 public:
44
49 fk_TriTexture(fk_Image *image = nullptr);
50
52 virtual ~fk_TriTexture();
53
55
58 void init(void);
59
61
80 bool setTextureCoord(int ID, double x, double y);
81
83
98 bool setTextureCoord(int ID, fk_TexCoord coord);
99
101
110 fk_TexCoord getTextureCoord(int ID);
111
113
127 bool setVertexPos(int ID, double x, double y, double z);
128
130
142 bool setVertexPos(int ID, fk_Vector pos);
143
145
154 fk_Vector getVertexPos(int ID);
155
156 private:
157 std::unique_ptr<Member> _m;
158
159 static inline std::vector<GLuint> _s_faceIndex;
160 static inline std::unique_ptr<GLuint> _s_faceIBO;
161 static inline std::unique_ptr<bool> _s_faceIndexFlg;
162
163 void PosUpdate(void);
164 void NormUpdate(void);
165 void TexCoordUpdate(void);
166 void StaticInit(void);
167 };
168}
169
170#endif // !__FK_TRI_TEXTURE_HEADER__
171
172/****************************************************************************
173 *
174 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
175 *
176 * Redistribution and use in source and binary forms,
177 * with or without modification, are permitted provided that the
178 * following conditions are met:
179 *
180 * - Redistributions of source code must retain the above
181 * copyright notice, this list of conditions and the
182 * following disclaimer.
183 *
184 * - Redistributions in binary form must reproduce the above
185 * copyright notice, this list of conditions and the
186 * following disclaimer in the documentation and/or
187 * other materials provided with the distribution.
188 *
189 * - Neither the name of the copyright holders nor the names
190 * of its contributors may be used to endorse or promote
191 * products derived from this software without specific
192 * prior written permission.
193 *
194 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
195 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
196 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
197 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
198 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
199 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
200 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
201 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
202 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
203 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
204 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
205 * POSSIBILITY OF SUCH DAMAGE.
206 *
207 ****************************************************************************/
208/****************************************************************************
209 *
210 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
211 *
212 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
213 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
214 *
215 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
216 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
217 *
218 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
219 * および下記免責条項を含めること。
220 *
221 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
222 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
223 * 含めること。
224 *
225 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
226 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
227 * コントリビューターの名前を使用してはならない。
228 *
229 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
230 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
231 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
232 * に限定されない、いかなる保証もないものとします。著作権者もコン
233 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
234 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
235 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
236 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
237 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
238 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
239 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
240 * ついて、一切責任を負わないものとします。
241 *
242 ****************************************************************************/
Texture.h
FK::fk_FVecArray
シェーダー内 attribute 変数用ベクトル管理クラス
Definition FVecArray.h:31
FK::fk_Image
画像を生成、管理するクラス
Definition Image.h:260
FK::fk_TexCoord
テクスチャ座標を管理するクラス
Definition Vector.h:799
FK::fk_Texture
テクスチャ用基底クラス
Definition Texture.h:45
FK::fk_TriTexture::~fk_TriTexture
virtual ~fk_TriTexture()
デストラクタ
FK::fk_TriTexture::setVertexPos
bool setVertexPos(int ID, fk_Vector pos)
頂点位置ベクトル設定関数2
FK::fk_TriTexture::setVertexPos
bool setVertexPos(int ID, double x, double y, double z)
頂点位置ベクトル設定関数1
FK::fk_TriTexture::setTextureCoord
bool setTextureCoord(int ID, double x, double y)
テクスチャ座標設定関数1
FK::fk_TriTexture::getTextureCoord
fk_TexCoord getTextureCoord(int ID)
テクスチャ座標取得関数
FK::fk_TriTexture::init
void init(void)
初期化関数
FK::fk_TriTexture::getVertexPos
fk_Vector getVertexPos(int ID)
頂点位置ベクトル取得関数
FK::fk_TriTexture::setTextureCoord
bool setTextureCoord(int ID, fk_TexCoord coord)
テクスチャ座標設定関数2
FK::fk_TriTexture::fk_TriTexture
fk_TriTexture(fk_Image *image=nullptr)
コンストラクタ
FK::fk_Vector
3次元ベクトルを管理するクラス
Definition Vector.h:45
FK
Fine Kernel Toolkit 名前空間
Definition Angle.h:6