FineKernelToolKit  3.1.0
ShaderBinder.h
[詳解]
1 #pragma once
2 
3 #include "ShaderProgram.h"
4 #include "ShaderParameter.h"
5 
6 using namespace System;
7 using namespace FK_CLI;
8 
9 namespace FK_ShaderPlugin
10 {
12 
38  public ref class fk_ShaderBinder
39  {
40  public:
42 
47 
49 
60 
62  ~fk_ShaderBinder();
63 
65 
69  property fk_ShaderProgram^ Program;
70 
72 
76  property fk_ShaderParameter^ Parameter;
77 
79 
91  void BindModel(fk_Model^ model);
92 
94 
101  void UnbindModel(fk_Model^ model);
102 
104 
121  void InitializeFrameBufferObject(int width, int height);
122 
124 
135  void InitializeFrameBufferObject(fk_Dimension^ dim);
136 
138 
144  void FinalizeFrameBufferObject();
145 
147 
159  void BindWindow(fk_IBindableDrawer^ window);
160 
162 
170  void UnbindWindow(fk_IBindableDrawer^ window);
171 
172  internal:
173  static bool Initialize(void);
174 
175  private:
176  void ProcPreShader(void);
177  void ProcPostShader(void);
178 
179  fk_ShaderProgram^ innerProgram = nullptr;
180  fk_ShaderParameter^ innerParameter = nullptr;
181 
182  static bool isExtensionInitialized = false;
183  bool usingProgram = false;
184 
185  void ProcPreDraw(void);
186  void ProcPostDraw(void);
187  UInt32 fboID;
188  UInt32 texID;
189  UInt32 depthTexID;
190  UInt32 rendID;
191  Int32 bufW;
192  Int32 bufH;
193  };
194 }
195 
196 
197 /****************************************************************************
198  *
199  * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
200  *
201  * Redistribution and use in source and binary forms,
202  * with or without modification, are permitted provided that the
203  * following conditions are met:
204  *
205  * - Redistributions of source code must retain the above
206  * copyright notice, this list of conditions and the
207  * following disclaimer.
208  *
209  * - Redistributions in binary form must reproduce the above
210  * copyright notice, this list of conditions and the
211  * following disclaimer in the documentation and/or
212  * other materials provided with the distribution.
213  *
214  * - Neither the name of the copyright holders nor the names
215  * of its contributors may be used to endorse or promote
216  * products derived from this software without specific
217  * prior written permission.
218  *
219  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
220  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
221  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
222  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
223  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
224  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
225  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
226  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
227  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
228  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
229  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
230  * POSSIBILITY OF SUCH DAMAGE.
231  *
232  ****************************************************************************/
233 /****************************************************************************
234  *
235  * Copyright (c) 1999-2016, Fine Kernel Project, All rights reserved.
236  *
237  * 本ソフトウェアおよびソースコードのライセンスは、基本的に
238  * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
239  *
240  * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
241  * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
242  *
243  * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
244  * および下記免責条項を含めること。
245  *
246  * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
247  * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
248  * 含めること。
249  *
250  * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
251  * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
252  * コントリビューターの名前を使用してはならない。
253  *
254  * 本ソフトウェアは、著作権者およびコントリビューターによって「現
255  * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
256  * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
257  * に限定されない、いかなる保証もないものとします。著作権者もコン
258  * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
259  * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
260  * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
261  * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
262  * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
263  * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
264  * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
265  * ついて、一切責任を負わないものとします。
266  *
267  ****************************************************************************/
画像サイズを表すクラス
Definition: Image_CLI.h:24
シェーダープログラム格納クラス
Definition: ShaderProgram.h:19
シェーダープログラム統括クラス
Definition: ShaderBinder.h:38
Definition: ShaderBinder.h:9
モデルを生成、管理するクラス
Definition: Model_CLI.h:125
シェーダーパラメーター管理クラス
Definition: ShaderParameter.h:21
Definition: AppWindow_CLI.h:11