Changeset 4805 for OpenSceneGraph/trunk/examples/osglogicop/osglogicop.cpp
- Timestamp:
- 11/17/05 21:22:55 (8 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/examples/osglogicop/osglogicop.cpp
r4739 r4805 13 13 const int _ops_nb=16; 14 14 const osg::LogicOp::Opcode _operations[_ops_nb]= 15 { 16 osg::LogicOp::CLEAR,17 osg::LogicOp::SET,18 osg::LogicOp::COPY,19 osg::LogicOp::COPY_INVERTED,20 osg::LogicOp::NOOP,21 osg::LogicOp::INVERT,22 osg::LogicOp::AND,23 osg::LogicOp::NAND,24 osg::LogicOp::OR,25 osg::LogicOp::NOR,26 osg::LogicOp::XOR,27 osg::LogicOp::EQUIV,28 osg::LogicOp::AND_REVERSE,29 osg::LogicOp::AND_INVERTED,30 osg::LogicOp::OR_REVERSE,31 osg::LogicOp::OR_INVERTED15 { 16 osg::LogicOp::CLEAR, 17 osg::LogicOp::SET, 18 osg::LogicOp::COPY, 19 osg::LogicOp::COPY_INVERTED, 20 osg::LogicOp::NOOP, 21 osg::LogicOp::INVERT, 22 osg::LogicOp::AND, 23 osg::LogicOp::NAND, 24 osg::LogicOp::OR, 25 osg::LogicOp::NOR, 26 osg::LogicOp::XOR, 27 osg::LogicOp::EQUIV, 28 osg::LogicOp::AND_REVERSE, 29 osg::LogicOp::AND_INVERTED, 30 osg::LogicOp::OR_REVERSE, 31 osg::LogicOp::OR_INVERTED 32 32 }; 33 33 34 34 const char* _ops_name[_ops_nb]= 35 { 36 "osg::LogicOp::CLEAR",37 "osg::LogicOp::SET",38 "osg::LogicOp::COPY",39 "osg::LogicOp::COPY_INVERTED",40 "osg::LogicOp::NOOP",41 "osg::LogicOp::INVERT",42 "osg::LogicOp::AND",43 "osg::LogicOp::NAND",44 "osg::LogicOp::OR",45 "osg::LogicOp::NOR",46 "osg::LogicOp::XOR",47 "osg::LogicOp::EQUIV",48 "osg::LogicOp::AND_REVERSE",49 "osg::LogicOp::AND_INVERTED",50 "osg::LogicOp::OR_REVERSE",51 "osg::LogicOp::OR_INVERTED"35 { 36 "osg::LogicOp::CLEAR", 37 "osg::LogicOp::SET", 38 "osg::LogicOp::COPY", 39 "osg::LogicOp::COPY_INVERTED", 40 "osg::LogicOp::NOOP", 41 "osg::LogicOp::INVERT", 42 "osg::LogicOp::AND", 43 "osg::LogicOp::NAND", 44 "osg::LogicOp::OR", 45 "osg::LogicOp::NOR", 46 "osg::LogicOp::XOR", 47 "osg::LogicOp::EQUIV", 48 "osg::LogicOp::AND_REVERSE", 49 "osg::LogicOp::AND_INVERTED", 50 "osg::LogicOp::OR_REVERSE", 51 "osg::LogicOp::OR_INVERTED" 52 52 }; 53 53 … … 73 73 TechniqueEventHandler(const TechniqueEventHandler&,const osg::CopyOp&) {} 74 74 75 osg::LogicOp* _logicOp; 76 77 int _ops_index; 75 osg::LogicOp* _logicOp; 76 int _ops_index; 78 77 79 78 }; … … 88 87 ea.getKey()==osgGA::GUIEventAdapter::KEY_KP_Right) 89 88 { 90 _ops_index++; 91 if (_ops_index>=_ops_nb) 92 _ops_index=0; 93 _logicOp->setOpcode(_operations[_ops_index]); 94 std::cout<<"Operation name = "<<_ops_name[_ops_index]<<std::endl; 89 _ops_index++; 90 if (_ops_index>=_ops_nb) _ops_index=0; 91 _logicOp->setOpcode(_operations[_ops_index]); 92 std::cout<<"Operation name = "<<_ops_name[_ops_index]<<std::endl; 95 93 return true; 96 94 } … … 98 96 ea.getKey()==osgGA::GUIEventAdapter::KEY_KP_Left) 99 97 { 100 _ops_index--; 101 if (_ops_index<0) 102 _ops_index=_ops_nb-1; 103 _logicOp->setOpcode(_operations[_ops_index]); 104 std::cout<<"Operation name = "<<_ops_name[_ops_index]<<std::endl; 98 _ops_index--; 99 if (_ops_index<0) _ops_index=_ops_nb-1; 100 _logicOp->setOpcode(_operations[_ops_index]); 101 std::cout<<"Operation name = "<<_ops_name[_ops_index]<<std::endl; 105 102 return true; 106 103 } … … 147 144 148 145 149 osg::StateSet* stateset =new osg::StateSet;150 osg::LogicOp* logicOp =new osg::LogicOp(osg::LogicOp::OR_INVERTED);151 146 osg::StateSet* stateset = new osg::StateSet; 147 osg::LogicOp* logicOp = new osg::LogicOp(osg::LogicOp::OR_INVERTED); 148 152 149 stateset->setAttributeAndModes(logicOp,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON); 153 150 154 155 151 //tell to sort the mesh before displaying it 156 152 stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); 157 153 158 154 159 155 loadedModel->setStateSet(stateset); … … 216 212 // fire off the cull and draw traversals of the scene. 217 213 viewer.frame(); 218 219 220 221 214 } 222 215
