97 if ((le->invalidBits)||(state->isCacheOpen()))
106 if ((NO_COLOR_MASK & le->invalidBits)||(state->isCacheOpen()))
107 le->reallySend(state, NO_COLOR_MASK);
115 if ((DIFFUSE_ONLY_MASK & le->invalidBits)||(state->isCacheOpen()))
116 le->reallySend(state, DIFFUSE_ONLY_MASK);
144 virtual void commonInit();
153 virtual SoElement* copyMatchInfo()
const;
156 virtual void registerRedundantSet(
SoState *, uint32_t bitmask);
160 typedef SoGLLazyState GLLazyState;
163 static void initClass();
164 static void exitClass();
170 void send(
const SoState *state, uint32_t mask)
const {
171 if ((mask & invalidBits)||(state->isCacheOpen()))
177 SbBool lazyMatches(uint32_t checkGLFlag, uint32_t checkIVFlag,
179 if (checkGLFlag || checkIVFlag ||
180 ivState.transpType != eltInState->ivState.transpType)
181 return fullLazyMatches(checkGLFlag, checkIVFlag, eltInState);
191 void setOverrideBlending(
bool value){ m_overrideBlending = value; }
194 bool isColorMaterialMode()
const;
197 const GLLazyState& getGLState()
const;
208 SoGLLazyElement::GLLazyState& cacheGLState);
215 SoGLLazyElement::GLLazyState& cacheGLState) {
216 if (cacheLazyElement->GLSendBits)
217 reallyCopyBackGL(cacheLazyElement->GLSendBits, cacheGLState);
222 void sendVPPacked(
SoState *state,
const unsigned char *pcolor);
227 void mergeCacheInfo(SoGLRenderCache * childCache,
228 SoGLRenderCache *parentCache,
230 uint32_t checkIVFlag,
231 uint32_t checkGLFlag);
234 void copyIVValues(uint32_t bitmask,
SoGLLazyElement *cacheLazyElement);
237 virtual void registerGetDependence(
SoState *, uint32_t bitmask);
241 void copyGLValues(uint32_t bitmask,
SoGLLazyElement *cacheLazyElement);
244 void reallySend(
const SoState *state, uint32_t bitmask);
247 SbBool fullLazyMatches(uint32_t checkGLFlag, uint32_t checkIVFlag,
256 virtual void setDiffuseElt(
SoNode *node, int32_t numColors,
260 virtual void setTranspElt(
SoNode *node, int32_t numTrans,
264 virtual void setTranspTypeElt(int32_t type);
265 virtual void setPatternFlagElt(
SbBool flag);
266 virtual void setPackedElt(
SoNode *node,
268 const uint32_t *packedColors,
271 virtual void setAmbientElt(
const SbColor *color);
272 virtual void setEmissiveElt(
const SbColor *color);
273 virtual void setSpecularElt(
const SbColor *color);
274 virtual void setShininessElt(
float color);
275 virtual void setColorMaterialElt(
SbBool value);
276 virtual void setBlendingElt(
SbBool value);
277 virtual void setSmoothingElt(
SbBool value);
278 virtual void setLightModelElt(
SoState *, int32_t model);
279 virtual void setMaterialElt(
SoNode *, uint32_t bitmask,
284 virtual void setMaterialElt(
SoNode *, uint32_t bitmask,
288 virtual void setLineWidthElt(
float lineWidth);
291 void reallyCopyBackGL(uint32_t bitmask, SoGLLazyElement::GLLazyState &);
294 SoGLLazyElement::GLLazyState* glState;
303 static u_char patterns[64+1][32 * 4];
306 static SbBool patternsCreated;
310 static SbBool patternListDefined[64+1];
313 static int patternListBase;
316 static int patternListContext;
323 void sendStipple(
const SoState *state,
int transpIndex);
327 static void createPatterns();
330 static bool s_useNewStippleBehavior;
333 void sendLineWidth(
const SoState *state);
337 static uint64_t GLSTATE_INVALID_NODEID;
340 static bool s_forceLineWidth;
343 bool m_overrideBlending;