Go to the documentation of this file.00001 #ifndef __FBTEXTURE_H__
00002 #define __FBTEXTURE_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00043 #include <kaydaradef.h>
00044 #ifndef FBSDK_DLL
00045
00048 #define FBSDK_DLL K_DLLIMPORT
00049 #endif
00050
00051 #include <fbsdk/fbcomponent.h>
00052 #include <fbsdk/fbcore.h>
00053 #include <fbsdk/fbproperties.h>
00054 #include <fbsdk/fbvideo.h>
00055
00056 #ifdef FBSDKUseNamespace
00057 namespace FBSDKNamespace {
00058 #endif
00059
00060
00062
00064 __FB_FORWARD( FBTexture );
00065
00070 enum FBTextureUseType {
00071 kFBTextureUseAll,
00072 kFBTextureUseColor,
00073 kFBTextureUseShadowMap,
00074 kFBTextureUseLightMap,
00075 kFBTextureUseSphericalReflexionMap,
00076 kFBTextureUseSphereReflexionMap,
00077 kFBTextureUseBumpNormalMap
00078 };
00079
00083 enum FBTextureMapping {
00084 kFBTextureNoMapping,
00085 kFBTextureMappingUV,
00086 kFBTextureMappingXY,
00087 kFBTextureMappingYZ,
00088 kFBTextureMappingXZ,
00089 kFBTextureMappingSpherical,
00090 kFBTextureMappingCylindrical,
00091 kFBTextureMappingEnvironment,
00092 kFBTextureMappingProjection
00093 };
00094
00098 enum FBTextureBlendMode {
00099 kFBTextureBlendTranslucent,
00100 kFBTextureBlendAdditive,
00101 kFBTextureBlendModulate,
00102 kFBTextureBlendModulate2,
00103 };
00104
00105 FB_DEFINE_ENUM( FBSDK_DLL, TextureUseType );
00106 FB_DEFINE_ENUM( FBSDK_DLL, TextureMapping );
00107 FB_DEFINE_ENUM( FBSDK_DLL, TextureBlendMode );
00108
00110
00111
00112 FB_FORWARD(FBRenderOptions);
00113
00114 FB_DEFINE_COMPONENT( FBSDK_DLL, Texture );
00115
00116 class FBSDK_DLL FBTexture : public FBBox {
00117 __FBClassDeclare( FBTexture,FBBox );
00118 public:
00123 FBTexture(const char* pName, HIObject pObject=NULL);
00124 virtual void FBDelete();
00125
00130 FBTexture* Clone();
00131
00132 FBPropertyInt Width;
00133 FBPropertyInt Height;
00134 FBPropertyTextureUseType UseType;
00135 FBPropertyTextureMapping Mapping;
00136 FBPropertyTextureBlendMode BlendMode;
00137 FBPropertyAnimatableVector3d Translation;
00138 FBPropertyAnimatableVector3d Rotation;
00139 FBPropertyAnimatableVector3d Scaling;
00140 FBPropertyAnimatableDouble Alpha;
00141 FBPropertyBool SwapUV;
00142 FBPropertyInt CroppingX[2];
00143 FBPropertyInt CroppingY[2];
00144 FBPropertyVideo Video;
00145 FBPropertyBool TakeBased;
00146 FBPropertyInt TextureOGLId;
00147
00148 void OGLInit(FBRenderOptions* pRenderOptions = NULL);
00149 unsigned int GetTextureObject();
00150 double* GetMatrix();
00151 };
00152
00154
00157
00158 class FBSDK_DLL FBPropertyListTexture : public FBPropertyListComponent
00159 {
00160 public:
00161 FBPropertyListTexture();
00168 virtual int Add( FBTexture* pItem );
00173 FBTexture* operator[](int pIndex);
00174
00175 private:
00176 inline virtual int Add ( FBComponent* pItem ) { return Add((FBTexture*)pItem); }
00177 };
00178
00180
00182 __FB_FORWARD( FBLayeredTexture );
00183
00189 class FBSDK_DLL FBLayeredTexture : public FBTexture {
00190 __FBClassDeclare( FBLayeredTexture,FBTexture );
00191 public:
00196 FBLayeredTexture(const char* pName, HIObject pObject=NULL);
00197 virtual void FBDelete();
00198
00203 FBLayeredTexture* Clone();
00204
00214 virtual void TextureLayerComposition(FBTime pTime,FBTime pTimeInCurrentTimeRef, int pWidth, int pHeight);
00215
00217 void SetLayerConfigDirty();
00218
00219 FBPropertyAnimatableColorAndAlpha BackgroundColor;
00220 FBPropertyListTexture Layers;
00221 };
00222
00225 #define FBStorableCustomTextureImplementation(ClassName, Type)\
00226 const char* ClassName::FbxGetObjectSubType(){ return #ClassName; }\
00227 HIObject RegisterStorable##ClassName##Create(HIObject , const char* pName, void* ){\
00228 ClassName* Class = new ClassName(pName);\
00229 Class->mAllocated = true;\
00230 if( Class->FBCreate() ){\
00231 return Class->GetHIObject();\
00232 } else {\
00233 delete Class;\
00234 return NULL;}}\
00235 FBLibraryModule(ClassName##Storable){\
00236 FBString lGroup = "FbxStorable/";\
00237 lGroup += #Type;\
00238 FBRegisterObject(ClassName##R2, lGroup, #ClassName, "", RegisterStorable##ClassName##Create, true, NULL);\
00239 FBSetStoreableCustomTextureRegistered();}\
00240
00241
00242 #ifdef FBSDKUseNamespace
00243 }
00244 #endif
00245
00246 #endif