Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

GraphicsDeviceComboInformation.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * グラフィックスデバイスコンボ情報ヘッダ
00022  * @author Junpee
00023  */
00024 
00025 #ifndef GRAPHICS_DEVICE_COMBO_INFORMATION_H_
00026 #define GRAPHICS_DEVICE_COMBO_INFORMATION_H_
00027 
00028 #include <Core/Container/ArrayList.h>
00029 #include <Graphics/Primitive/VertexProcessingType.h>
00030 
00031 namespace Lamp{
00032 
00033 class GraphicsDeviceEnumeration;
00034 class GraphicsDeviceInformation;
00035 class ConfirmGraphicsDevice;
00036 
00037 //------------------------------------------------------------------------------
00038 /**
00039  * グラフィックスデバイスコンボ情報
00040  */
00041 class GraphicsDeviceComboInformation{
00042 friend class GraphicsDeviceInformation;
00043 public:
00044     //--------------------------------------------------------------------------
00045     /**
00046      * アダプタフォーマットの取得
00047      * @return アダプタフォーマット
00048      */
00049     virtual D3DFORMAT getAdapterFormat(){ return adapterFormat_; }
00050 
00051     /**
00052      * バックバッファフォーマットの取得
00053      * @return バックバッファフォーマット
00054      */
00055     virtual D3DFORMAT getBackBufferFormat(){ return backBufferFormat_; }
00056 
00057     /**
00058      * ウィンドウフラグの取得
00059      * @return ウィンドウフラグ
00060      */
00061     virtual bool isWindowed(){ return isWindowed_; }
00062 
00063     //--------------------------------------------------------------------------
00064     /**
00065      * アダプタ番号の取得
00066      * @return アダプタ番号
00067      */
00068     virtual int getAdapterOrdinal(){ return adapterOrdinal_; }
00069 
00070     /**
00071      * デバイスタイプの取得
00072      * @return デバイスタイプ
00073      */
00074     virtual D3DDEVTYPE getDeviceType(){ return deviceType_; }
00075 
00076     //--------------------------------------------------------------------------
00077     /**
00078      * 深度、ステンシルフォーマット数の取得
00079      * @return 深度、ステンシルフォーマット数
00080      */
00081     virtual int getDepthStencilFormatCount() const{
00082         return depthStencilFormats_.getCount();
00083     }
00084 
00085     /**
00086      * 深度、ステンシルフォーマットの取得
00087      * @param index インデックス
00088      * @return 深度、ステンシルフォーマット
00089      */
00090     virtual D3DFORMAT getDepthStencilFormat(int index){
00091         return depthStencilFormats_.get(index);
00092     }
00093 
00094     //--------------------------------------------------------------------------
00095     /**
00096      * マルチサンプルタイプ数の取得
00097      * @return マルチサンプルタイプ数
00098      */
00099     virtual int getMultiSampleTypeCount() const{
00100         return multiSampleTypes_.getCount();
00101     }
00102 
00103     /**
00104      * マルチサンプルタイプの取得
00105      * @param index インデックス
00106      * @return マルチサンプルタイプ
00107      */
00108     virtual D3DMULTISAMPLE_TYPE getMultiSampleType(int index){
00109         return multiSampleTypes_.get(index);
00110     }
00111 
00112     /**
00113      * マルチサンプルタイプのクォリティの取得
00114      *
00115      * マルチサンプルタイプのクォリティ数はgetMultiSampleTypeCount()で取得する。
00116      * @param index インデックス
00117      * @return マルチサンプルタイプのクォリティ
00118      */
00119     virtual u_int getMultiSampleTypeQuality(int index){
00120         return multiSampleTypeQualities_.get(index);
00121     }
00122 
00123     //--------------------------------------------------------------------------
00124     /**
00125      * マルチサンプルコンフリクト数の取得
00126      * @return マルチサンプルと深度、ステンシルフォーマットとのコンフリクト数
00127      */
00128     virtual int getMultiSampleConflictCount() const{
00129         return multiSampleConflictFormats_.getCount();
00130     }
00131 
00132     /**
00133      * マルチサンプルコンフリクトフォーマットの取得
00134      * @param index インデックス
00135      * @return マルチサンプルとコンフリクトした深度、ステンシルフォーマット
00136      */
00137     virtual D3DFORMAT getMultiSampleConflictFormat(int index){
00138         return multiSampleConflictFormats_.get(index);
00139     }
00140 
00141     /**
00142      * マルチサンプルコンフリクトタイプの取得
00143      * @param index インデックス
00144      * @return 深度、ステンシルフォーマットとコンフリクトしたマルチサンプルタイプ
00145      */
00146     virtual D3DMULTISAMPLE_TYPE getMultiSampleConflictType(int index){
00147         return multiSampleConflictTypes_.get(index);
00148     }
00149 
00150     //--------------------------------------------------------------------------
00151     /**
00152      * 頂点プロセスタイプ数の取得
00153      * @return 頂点プロセスタイプ数
00154      */
00155     virtual int getVertexProcessingTypeCount() const{
00156         return vertexProcessingTypes_.getCount();
00157     }
00158 
00159     /**
00160      * 頂点プロセスタイプの取得
00161      * @param index インデックス
00162      * @return 頂点プロセスタイプ
00163      */
00164     virtual VertexProcessingType getVertexProcessingType(int index){
00165         return vertexProcessingTypes_.get(index);
00166     }
00167 
00168     //--------------------------------------------------------------------------
00169     /**
00170      * プレゼンテーション間隔数の取得
00171      * @return プレゼンテーション間隔数
00172      */
00173     virtual int getPresentationIntervalCount() const{
00174         return presentationInterval_.getCount();
00175     }
00176 
00177     /**
00178      * プレゼンテーション間隔の取得
00179      * @param index インデックス
00180      * @return プレゼンテーション間隔
00181      */
00182     virtual u_int getPresentationInterval(int index){
00183         return presentationInterval_.get(index);
00184     }
00185 
00186     //--------------------------------------------------------------------------
00187     /**
00188      * 文字列への変換
00189      * @return GraphicsDeviceComboInformationの文字列表記
00190      */
00191     virtual String toString();
00192 
00193     //--------------------------------------------------------------------------
00194 protected:
00195     /**
00196      * コンストラクタ
00197      */
00198     GraphicsDeviceComboInformation(
00199         D3DFORMAT adapterFormat, D3DFORMAT backBufferFormat, bool isWindowed);
00200 
00201     /**
00202      * デストラクタ
00203      */
00204     virtual ~GraphicsDeviceComboInformation();
00205 
00206     /**
00207      * 列挙
00208      * @param enumeration グラフィックスデバイス列挙
00209      * @param deviceInformation グラフィックスデバイス情報
00210      * @return 列挙が成功すればtrue
00211      */
00212     virtual bool enumerate(GraphicsDeviceEnumeration* enumeration,
00213         GraphicsDeviceInformation* deviceInformation);
00214 
00215     /**
00216      * 深度、ステンシルフォーマットの構築
00217      * @param minimumDepthBits 最小深度ビット
00218      * @param minimumStencilBits 最小ステンシルビット
00219      */
00220     virtual void buildDepthStencilFormats(
00221         u_int minimumDepthBits, u_int minimumStencilBits);
00222 
00223     /**
00224      * マルチサンプルタイプの構築
00225      */
00226     virtual void buildMultiSampleType();
00227 
00228     /**
00229      * マルチサンプルコンフリクトの構築
00230      */
00231     virtual void buildMultiSampleConflict();
00232 
00233     /**
00234      * 頂点プロセスタイプの構築
00235      * @param deviceCapability デバイス能力
00236      * @param usesMixedVertexProcessing 混合頂点プロセスを使用するならtrue
00237      * @param confirmDevice デバイス確認インターフェース
00238      */
00239     virtual void buildVertexProcessingType(
00240         const D3DCapacity& deviceCapability, bool usesMixedVertexProcessing,
00241         ConfirmGraphicsDevice* confirmDevice);
00242 
00243     /**
00244      * プレゼンテーション間隔の構築
00245      * @param deviceCapability デバイス能力
00246      */
00247     virtual void buildPresentationInterval(const D3DCapacity& deviceCapability);
00248 
00249 private:
00250     // コピーコンストラクタの隠蔽
00251     GraphicsDeviceComboInformation(const GraphicsDeviceComboInformation& copy);
00252 
00253     // 代入コピーの隠蔽
00254     void operator =(const GraphicsDeviceComboInformation& copy);
00255 
00256     // 深度、ステンシルフォーマット
00257     ArrayList<D3DFORMAT> depthStencilFormats_;
00258     // マルチサンプルタイプ
00259     ArrayList<D3DMULTISAMPLE_TYPE> multiSampleTypes_;
00260     // マルチサンプルタイプクォリティ
00261     ArrayList<u_int> multiSampleTypeQualities_;
00262     // マルチサンプルコンフリクトフォーマット
00263     ArrayList<D3DFORMAT> multiSampleConflictFormats_;
00264     // マルチサンプルコンフリクトタイプ
00265     ArrayList<D3DMULTISAMPLE_TYPE> multiSampleConflictTypes_;
00266     // 頂点プロセスタイプ
00267     ArrayList<VertexProcessingType> vertexProcessingTypes_;
00268     // プレゼンテーション間隔
00269     ArrayList<u_int> presentationInterval_;
00270 
00271     // アダプタ番号
00272     int adapterOrdinal_;
00273     // デバイスタイプ
00274     D3DDEVTYPE deviceType_;
00275     // アダプタフォーマット
00276     D3DFORMAT adapterFormat_;
00277     // バックバッファフォーマット
00278     D3DFORMAT backBufferFormat_;
00279     // ウィンドウフラグ
00280     bool isWindowed_;
00281 };
00282 
00283 //------------------------------------------------------------------------------
00284 } // End of namespace Lamp
00285 #endif // End of GRAPHICS_DEVICE_COMBO_INFORMATION_H_
00286 //------------------------------------------------------------------------------

Generated on Wed Mar 16 10:29:31 2005 for Lamp by doxygen 1.3.2