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 //------------------------------------------------------------------------------