#include <OSGFatBorderChunkBase.h>
Inheritance diagram for osg::FatBorderChunkBase:

Public Types | |
| typedef FatBorderChunkPtr | Ptr |
| enum | { ProgramFieldId = Inherited::NextFieldId, ParamValuesFieldId = ProgramFieldId + 1, ParamNamesFieldId = ParamValuesFieldId + 1, GLIdFieldId = ParamNamesFieldId + 1, NextFieldId = GLIdFieldId + 1 } |
Public Member Functions | |
FieldContainer Get | |
| *virtual FieldContainerType & | getType (void) |
| virtual const FieldContainerType & | getType (void) const |
| virtual UInt32 | getContainerSize (void) const |
Binary Access | |
| *virtual UInt32 | getBinSize (const BitVector &whichField) |
| virtual void | copyToBin (BinaryDataHandler &pMem, const BitVector &whichField) |
| virtual void | copyFromBin (BinaryDataHandler &pMem, const BitVector &whichField) |
Copy | |
| *virtual FieldContainerPtr | shallowCopy (void) const |
Chunk Class Access | |
| *virtual const StateChunkClass * | getClass (void) const |
Sync | |
| *virtual void | changed (BitVector whichField, UInt32 origin) |
Output | |
| *virtual void | dump (UInt32 uiIndent=0, const BitVector bvFlags=0) const |
Static Public Member Functions | |
Class Get | |
| *static FieldContainerType & | getClassType (void) |
| access the type of the class | |
| static UInt32 | getClassTypeId (void) |
| access the numerical type of the class | |
Construction | |
| *static FatBorderChunkPtr | create (void) |
| create a new instance of the class | |
| static FatBorderChunkPtr | createEmpty (void) |
| create an empty new instance of the class, do not copy the prototype | |
Static Chunk Class Access | |
| *static UInt32 | getStaticClassId (void) |
| static const StateChunkClass * | getStaticClass (void) |
Static Public Attributes | |
| static const osg::BitVector | MTInfluenceMask |
| static const osg::BitVector | ProgramFieldMask |
| static const osg::BitVector | ParamValuesFieldMask |
| static const osg::BitVector | ParamNamesFieldMask |
| static const osg::BitVector | GLIdFieldMask |
| static const BitVector | InternalFieldMask = (1 << Attachment::InternalFieldId) |
| static const BitVector | ParentsFieldMask = (1 << Attachment::ParentsFieldId) |
| static const BitVector | NextFieldMask |
Protected Member Functions | |
Constructors | |
| * | FatBorderChunkBase (void) |
| FatBorderChunkBase (const FatBorderChunkBase &source) | |
Destructors | |
| *virtual | ~FatBorderChunkBase (void) |
Sync | |
| *void | executeSyncImpl (FatBorderChunkBase *pOther, const BitVector &whichField) |
| virtual void | executeSync (FieldContainer &other, const BitVector &whichField) |
Init | |
| *void | onCreate (const VertexProgramChunk *source=NULL) |
Program-Specific Methods | |
| *virtual UInt32 | getExtension (void) const |
| virtual GLenum | getTarget (void) const |
| virtual const char * | getTargetName (void) const |
Sync | |
| *void | executeSyncImpl (VertexProgramChunkBase *pOther, const BitVector &whichField) |
Private Types | |
| typedef VertexProgramChunk | Inherited |
Private Member Functions | |
| void | operator= (const FatBorderChunkBase &source) |
Static Private Attributes | |
| static FieldContainerType | _type |
Friends | |
| class | FieldContainer |
Definition at line 80 of file OSGFatBorderChunkBase.h.
|
|
Reimplemented from osg::VertexProgramChunk. Reimplemented in osg::FatBorderChunk. Definition at line 84 of file OSGFatBorderChunkBase.h. |
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 89 of file OSGFatBorderChunkBase.h. |
|
|
Reimplemented from osg::Attachment. Definition at line 95 of file OSGProgramChunkBase.h. 00096 { 00097 ProgramFieldId = Inherited::NextFieldId, 00098 ParamValuesFieldId = ProgramFieldId + 1, 00099 ParamNamesFieldId = ParamValuesFieldId + 1, 00100 GLIdFieldId = ParamNamesFieldId + 1, 00101 NextFieldId = GLIdFieldId + 1 00102 };
|
|
|
Definition at line 144 of file OSGFatBorderChunkBase.cpp. 00144 : 00145 Inherited() 00146 { 00147 }
|
|
|
Definition at line 153 of file OSGFatBorderChunkBase.cpp. 00153 : 00154 Inherited (source) 00155 { 00156 }
|
|
|
Definition at line 160 of file OSGFatBorderChunkBase.cpp.
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 58 of file OSGFatBorderChunkBase.inl. References _type. Referenced by create(). 00059 { 00060 return _type; 00061 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 65 of file OSGFatBorderChunkBase.inl. References _type, and osg::TypeBase::getId(). 00066 { 00067 return _type.getId(); 00068 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 86 of file OSGFatBorderChunkBase.cpp. References _type. 00087 { 00088 return _type; 00089 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 91 of file OSGFatBorderChunkBase.cpp. References _type. 00092 { 00093 return _type; 00094 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 106 of file OSGFatBorderChunkBase.cpp. 00107 { 00108 return sizeof(FatBorderChunk); 00109 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 166 of file OSGFatBorderChunkBase.cpp. References osg::VertexProgramChunkBase::getBinSize(). 00167 { 00168 UInt32 returnValue = Inherited::getBinSize(whichField); 00169 00170 00171 return returnValue; 00172 }
|
|
||||||||||||
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 174 of file OSGFatBorderChunkBase.cpp. References osg::VertexProgramChunkBase::copyToBin(). 00176 { 00177 Inherited::copyToBin(pMem, whichField); 00178 00179 00180 }
|
|
||||||||||||
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 182 of file OSGFatBorderChunkBase.cpp. References osg::VertexProgramChunkBase::copyFromBin(). 00184 { 00185 Inherited::copyFromBin(pMem, whichField); 00186 00187 00188 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 72 of file OSGFatBorderChunkBase.inl. References osg::AttachmentPtr::dcast(), getClassType(), osg::FieldContainerType::getPrototype(), osg::NullFC, and shallowCopy(). 00073 { 00074 FatBorderChunkPtr fc; 00075 00076 if(getClassType().getPrototype() != OSG::NullFC) 00077 { 00078 fc = FatBorderChunkPtr::dcast( 00079 getClassType().getPrototype()-> shallowCopy()); 00080 } 00081 00082 return fc; 00083 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 87 of file OSGFatBorderChunkBase.inl. References osg::FieldContainer::newPtr(). 00088 { 00089 FatBorderChunkPtr returnValue; 00090 00091 newPtr(returnValue); 00092 00093 return returnValue; 00094 }
|
|
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 97 of file OSGFatBorderChunkBase.cpp. References osg::FieldContainer::newPtr(). Referenced by create(). 00098 { 00099 FatBorderChunkPtr returnValue; 00100 00101 newPtr(returnValue, dynamic_cast<const FatBorderChunk *>(this)); 00102 00103 return returnValue; 00104 }
|
|
||||||||||||
|
Definition at line 191 of file OSGFatBorderChunkBase.cpp. References osg::VertexProgramChunkBase::executeSyncImpl(). Referenced by executeSync(). 00193 { 00194 00195 Inherited::executeSyncImpl(pOther, whichField); 00196 00197 00198 }
|
|
||||||||||||
|
Reimplemented from osg::VertexProgramChunkBase. Definition at line 113 of file OSGFatBorderChunkBase.cpp. References executeSyncImpl(). 00115 { 00116 this->executeSyncImpl((FatBorderChunkBase *) &other, whichField); 00117 }
|
|
|
|
|
|
Reimplemented from osg::ProgramChunk. Definition at line 138 of file OSGVertexProgramChunk.cpp. References osg::VertexProgramChunk::_class. 00139 { 00140 return &_class; 00141 }
|
|
|
Reimplemented from osg::ProgramChunk. Definition at line 46 of file OSGVertexProgramChunk.inl. References osg::StateChunkClass::getId(), and osg::VertexProgramChunk::getStaticClass(). 00047 { 00048 return getStaticClass()->getId(); 00049 }
|
|
|
Reimplemented from osg::ProgramChunk. Definition at line 52 of file OSGVertexProgramChunk.inl. References osg::VertexProgramChunk::_class. Referenced by osg::VertexProgramChunk::getStaticClassId(). 00053 { 00054 return &VertexProgramChunk::_class; 00055 }
|
|
||||||||||||
|
Reimplemented from osg::ProgramChunk. Reimplemented in osg::FatBorderChunk. Definition at line 145 of file OSGVertexProgramChunk.cpp. References osg::ProgramChunk::changed(). Referenced by osg::FatBorderChunk::changed(). 00146 { 00147 Inherited::changed(whichField, origin); 00148 }
|
|
||||||||||||
|
Reimplemented from osg::ProgramChunk. Reimplemented in osg::FatBorderChunk. Definition at line 150 of file OSGVertexProgramChunk.cpp. References SLOG. 00152 { 00153 SLOG << "Dump VertexProgramChunk NI" << std::endl; 00154 }
|
|
|
|
Definition at line 142 of file OSGProgramChunk.cpp.
|
|
|
Definition at line 318 of file OSGFieldContainerImpl.inl. Referenced by osg::ShaderParameterChunk::onCreate().
|
|
|
Virtual helper function to let the derived chunks return the extension that they implement. Only if this extension is supproted on the current Window is the porgram called. Reimplemented from osg::ProgramChunk. Definition at line 166 of file OSGVertexProgramChunk.cpp. References osg::VertexProgramChunk::_arbVertexProgram. 00167 { 00168 return _arbVertexProgram; 00169 }
|
|
|
Virtual helper function to let the derived chunks return the target constant that they implement. Reimplemented from osg::ProgramChunk. Definition at line 171 of file OSGVertexProgramChunk.cpp. References GL_VERTEX_PROGRAM_ARB. 00172 { 00173 return GL_VERTEX_PROGRAM_ARB; 00174 }
|
|
|
Virtual helper function to let the derived chunks return the name of the target constant that they implement, for debugging purposes. Reimplemented from osg::ProgramChunk. Definition at line 176 of file OSGVertexProgramChunk.cpp.
|
|
||||||||||||||||||||
|
GL object handler create the program and destroy it Definition at line 344 of file OSGProgramChunk.cpp. References osg::ProgramChunk::_funcBindProgram, osg::ProgramChunk::_funcDeletePrograms, osg::ProgramChunk::_funcProgramLocalParameter4fv, osg::ProgramChunk::_funcProgramString, osg::Window::destroy, osg::endLog(), osg::Window::finaldestroy, osg::Window::getFunction(), osg::ProgramChunkBase::getParamValues(), osg::ProgramChunkBase::getProgram(), osg::PointInterface< ValueTypeT, StorageInterfaceT >::getValues(), GL_PROGRAM_FORMAT_ASCII_ARB, GLenum, glErr, GLsizei, GLuint(), osg::Window::hasExtension(), osg::Window::initialize, osg::Window::needrefresh, OSG_APIENTRY, osg::ProgramChunk::printCompileError(), osg::Window::reinitialize, osg::MField< FieldTypeT, fieldNameSpace >::size(), SWARNING, and osg::Window::unpackIdStatus(). Referenced by osg::VertexProgramChunk::handleGL(), and osg::FragmentProgramChunk::handleGL(). 00345 { 00346 Window::GLObjectStatusE mode; 00347 UInt32 id; 00348 00349 Window::unpackIdStatus(idstatus, id, mode); 00350 00351 // get the program-specific specifics from the derived chunks 00352 // We can't call this member methods on Window::destroy because 00353 // the ProgramChunk instance is already destroyed. 00354 //GLenum target = getTarget(); 00355 //UInt32 extension = getExtension(); 00356 00357 if(!win->hasExtension(extension)) 00358 return; 00359 00360 if(mode == Window::destroy) 00361 { 00362 // get "glDeleteProgramsARB" function pointer 00363 void (OSG_APIENTRY* deletePrograms)(GLsizei num, const GLuint *progs) = 00364 (void (OSG_APIENTRY*)(GLsizei num, const GLuint *progs)) 00365 win->getFunction(_funcDeletePrograms); 00366 00367 GLuint prog = id; 00368 deletePrograms(1, &prog); 00369 } 00370 else if(mode == Window::finaldestroy) 00371 { 00372 //SWARNING << "Last program user destroyed" << std::endl; 00373 } 00374 else if(mode == Window::initialize || mode == Window::reinitialize || 00375 mode == Window::needrefresh) 00376 { 00377 // get "glBindProgramARB" function pointer 00378 void (OSG_APIENTRY* bindProgram)(GLenum target, GLuint prog) = 00379 (void (OSG_APIENTRY*)(GLenum target, GLuint prog)) 00380 win->getFunction(_funcBindProgram); 00381 00382 glErr("ProgramChunk::handleGL: bindProgram precheck"); 00383 00384 bindProgram(target, id); 00385 00386 glErr("ProgramChunk::handleGL: bindProgram postcheck"); 00387 00388 if(mode != Window::needrefresh) 00389 { 00390 // get "glProgramStringARB" function pointer 00391 void (OSG_APIENTRY* programString)(GLenum target, GLenum format, 00392 GLsizei lesn, const void *string) = 00393 (void (OSG_APIENTRY*)(GLenum target, GLenum format, 00394 GLsizei len, const void *string)) 00395 win->getFunction(_funcProgramString); 00396 00397 glErr("ProgramChunk::handleGL: programString precheck"); 00398 00399 glEnable(target); 00400 00401 glErr("ProgramChunk::handleGL: enable postcheck"); 00402 00403 programString(target, GL_PROGRAM_FORMAT_ASCII_ARB, 00404 getProgram().size(), getProgram().c_str()); 00405 00406 GLenum err = glGetError(); 00407 00408 if(err == GL_INVALID_OPERATION) 00409 { 00410 printCompileError(win, idstatus); 00411 } 00412 else if (err != GL_NO_ERROR) 00413 { 00414 SWARNING << "ProgramChunk::programString postcheck failed:" 00415 << gluErrorString(err) << endLog; 00416 } 00417 00418 glDisable(target); 00419 00420 glErr("ProgramChunk::handleGL: disable postcheck"); 00421 } 00422 00423 void (OSG_APIENTRY* programLocalParameter4fv)(GLenum target, 00424 GLuint index, const GLfloat *params) = 00425 (void (OSG_APIENTRY*)(GLenum target, 00426 GLuint index, const GLfloat *params)) 00427 win->getFunction(_funcProgramLocalParameter4fv); 00428 00429 glErr("ProgramChunk::handleGL: programLocalParameter precheck"); 00430 00431 for(UInt16 i = 0; i < getParamValues().size(); ++i) 00432 { 00433 Vec4f &val=getParamValues()[i]; 00434 00435 programLocalParameter4fv(target, i, val.getValues()); 00436 00437 glErr("ProgramChunk::handleGL: programLocalParameter"); 00438 } 00439 00440 glErr("ProgramChunk::handleGL: programLocalParameter postcheck"); 00441 } 00442 else 00443 { 00444 SWARNING << "ProgramChunk(" << this << "::handleGL: Illegal mode: " 00445 << mode << " for id " << id << std::endl; 00446 } 00447 00448 }
|
|
||||||||||||
|
Definition at line 191 of file OSGVertexProgramChunkBase.cpp. References osg::ProgramChunkBase::executeSyncImpl(). Referenced by osg::VertexProgramChunkBase::executeSync(), and executeSyncImpl(). 00193 { 00194 00195 Inherited::executeSyncImpl(pOther, whichField); 00196 00197 00198 }
|
|
||||||||||||
|
||||||||||||
|
||||||||||||
|
||||||||||||
|
Definition at line 333 of file OSGFieldContainerImpl.inl. Referenced by osg::StateBase::executeSyncImpl(), osg::DVRShaderBase::executeSyncImpl(), osg::DVRClipGeometryBase::executeSyncImpl(), osg::AttachmentContainer::executeSyncImpl(), and osg::Attachment::executeSyncImpl().
|
|
|
Read the program string from the given file Definition at line 183 of file OSGProgramChunk.cpp. References FWARNING. 00184 { 00185 std::ifstream s(file); 00186 00187 if(s.good()) 00188 { 00189 return read(s); 00190 } 00191 else 00192 { 00193 FWARNING(("ProgramChunk::read: couldn't open '%s' for reading!\n", 00194 file)); 00195 return false; 00196 } 00197 }
|
|
|
Read the program string from the given stream Definition at line 201 of file OSGProgramChunk.cpp. References BUFSIZE, FWARNING, and osg::ProgramChunkBase::getProgram(). 00202 { 00203 #define BUFSIZE 200 00204 00205 getProgram().erase(); 00206 char buf[BUFSIZE]; 00207 00208 if(!stream.good()) 00209 { 00210 FWARNING(("ProgramChunk::read: stream is not good!\n")); 00211 return false; 00212 00213 } 00214 00215 do 00216 { 00217 stream.read(buf, BUFSIZE); 00218 getProgram().append(buf, stream.gcount()); 00219 } 00220 while(!stream.eof()); 00221 00222 return true; 00223 }
|
|
||||||||||||
|
Add a named parameter Definition at line 227 of file OSGProgramChunk.cpp. References osg::ProgramChunkBase::getParamNames(), osg::MField< FieldTypeT, fieldNameSpace >::resize(), and osg::MField< FieldTypeT, fieldNameSpace >::size(). Referenced by osg::ProgramChunk::addParameter(). 00229 { 00230 if(index < 0) 00231 return true; 00232 00233 if(getParamNames().size() <= UInt16(index)) 00234 { 00235 getParamNames().resize(index + 1); 00236 } 00237 getParamNames()[index] = name; 00238 return false; 00239 }
|
|
||||||||||||||||
|
Concvenience function to add a new parameter and directly set its value. Definition at line 63 of file OSGProgramChunk.inl. References osg::ProgramChunk::addParameter(), and osg::ProgramChunk::setParameter(). |