43class COIN_DLL_API SoGLLazyElement :
public SoLazyElement {
44 typedef SoLazyElement inherited;
46 SO_ELEMENT_HEADER(SoGLLazyElement);
54 virtual void init(SoState *state);
55 virtual void push(SoState *state);
56 virtual void pop(SoState *state,
const SoElement * prevtopelement);
61 static void sendLightModel(SoState * state,
const int32_t model);
62 static void sendPackedDiffuse(SoState * state,
const uint32_t diffuse);
63 static void sendFlatshading(SoState * state,
const SbBool onoff);
64 static void sendVertexOrdering(SoState * state,
const VertexOrdering ordering);
65 static void sendTwosideLighting(SoState * state,
const SbBool onoff);
66 static void sendBackfaceCulling(SoState * state,
const SbBool onoff);
70 static SoGLLazyElement *
getInstance(
const SoState *state);
71 void send(
const SoState *state, uint32_t mask)
const;
73 void sendVPPacked(SoState* state,
const unsigned char* pcolor);
75 void reset(SoState* state, uint32_t bitmask)
const;
78 uint32_t cachebitmask;
86 int32_t blend_sfactor;
87 int32_t blend_dfactor;
88 int32_t alpha_blend_sfactor;
89 int32_t alpha_blend_dfactor;
91 int32_t vertexordering;
95 int32_t alphatestfunc;
97 SbUniqueId diffusenodeid;
98 SbUniqueId transpnodeid;
102 virtual void setDiffuseElt(
SoNode*, int32_t numcolors,
104 virtual void setPackedElt(
SoNode * node, int32_t numcolors,
105 const uint32_t * colors,
const SbBool packedtransparency);
106 virtual void setColorIndexElt(
SoNode * node, int32_t numindices,
107 const int32_t * indices);
108 virtual void setTranspElt(
SoNode * node, int32_t numtransp,
111 virtual void setTranspTypeElt(int32_t type);
112 virtual void setAmbientElt(
const SbColor* color);
113 virtual void setEmissiveElt(
const SbColor* color);
114 virtual void setSpecularElt(
const SbColor* color);
115 virtual void setShininessElt(
float value);
116 virtual void setColorMaterialElt(SbBool value);
117 virtual void enableBlendingElt(
int sfactor,
int dfactor,
int alpha_sfactor,
int alpha_dfactor);
118 virtual void disableBlendingElt(
void);
119 virtual void setLightModelElt(SoState *state, int32_t model);
120 virtual void setMaterialElt(
SoNode * node, uint32_t bitmask,
122 const SbColor * diffuse,
const int numdiffuse,
123 const float * transp,
const int numtransp,
127 const float shininess,
128 const SbBool istransparent);
129 virtual void setVertexOrderingElt(VertexOrdering ordering);
130 virtual void setBackfaceCullingElt(SbBool onoff);
131 virtual void setTwosideLightingElt(SbBool onoff);
132 virtual void setShadeModelElt(SbBool flatshading);
133 virtual void setAlphaTestElt(
int func,
float value);
135 static void beginCaching(SoState * state,
138 static void endCaching(SoState * state);
147 void updateColorVBO(SoVBO * vbo);
150 virtual void lazyDidSet(uint32_t mask);
151 virtual void lazyDidntSet(uint32_t mask);
154 void sendPackedDiffuse(
const uint32_t diffuse)
const;
155 void sendAmbient(
const SbColor & color)
const;
156 void sendEmissive(
const SbColor & color)
const;
157 void sendSpecular(
const SbColor & specular)
const;
158 void sendShininess(
const float shininess)
const;
159 void sendTransparency(
const int stipplenum)
const;
160 void enableBlending(
const int sfactor,
const int dfactor)
const;
161 void enableSeparateBlending(
const cc_glglue * glue,
162 const int sfactor,
const int dfactor,
163 const int alpha_sfactor,
const int alpha_dfactor)
const;
164 void disableBlending(
void)
const;
166 void sendLightModel(
const int32_t model)
const;
167 void sendFlatshading(
const SbBool onoff)
const;
168 void sendVertexOrdering(
const VertexOrdering ordering)
const;
169 void sendTwosideLighting(
const SbBool onoff)
const;
170 void sendBackfaceCulling(
const SbBool onoff)
const;
171 void sendAlphaTest(
int func,
float value)
const;
175 mutable uint32_t didsetbitmask;
176 mutable uint32_t didntsetbitmask;
177 mutable uint32_t cachebitmask;
178 mutable uint32_t opencacheflags;
185 mutable const uint32_t * packedpointer;
188 SoGLLazyElementP * pimpl;
static void mergeCacheInfo(SoState *state, SoGLLazyElement::GLState *childprestate, SoGLLazyElement::GLState *childpoststate)
Definition SoGLLazyElement.cpp:1273