Tint i,n;
Tint transp = 0;
- GLint renderMode;
// Following pointers have been provided for performance improvement
tel_colour pfc = myPArray->fcolours;
Tint* pvc = myPArray->vcolours;
else
glEnable (GL_LIGHTING);
- glGetIntegerv (GL_RENDER_MODE, &renderMode);
-
if (myPArray->num_vertexs > 0
&& myPArray->flagBufferVBO != VBO_OK
- && renderMode != GL_FEEDBACK)
+ && !aGlContext->IsFeedback())
{
if (myPArray->vertices != NULL)
{
for (i = n = 0; i < myPArray->num_bounds; ++i)
{
if (pfc != NULL) glColor3fv (pfc[i].rgb);
- DrawElements (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawElements (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
myPArray->bounds[i], (GLenum* )&myPArray->edges[n]);
n += myPArray->bounds[i];
}
{
glColor3fv (pfc[i].rgb);
}
- DrawArrays (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawArrays (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
n, myPArray->bounds[i]);
n += myPArray->bounds[i];
}
}
else if (myPArray->num_edges > 0)
{
- DrawElements (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawElements (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
myPArray->num_edges, (GLenum* )myPArray->edges);
}
else
{
- DrawArrays (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawArrays (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
0, myPArray->num_vertexs);
}
}
// either disable VBO or turn off edge visibilty in the current
// primitive array and create a separate primitive array (segments)
// and put edges to be drawn into it.
- DrawEdges (theEdgeFlag ? theEdgeColour : theInteriorColour, theWorkspace);
+ if (myDrawMode > GL_LINE_STRIP)
+ {
+ DrawEdges (theEdgeFlag ? theEdgeColour : theInteriorColour, theWorkspace);
+ }
break;
// DegenerateModel(as Lines, Points, BBoxs) are used only without VBO
case 2: // XXX_TDM_WIREFRAME
}
Tint i, j, n;
- GLint renderMode;
// OCC22236 NOTE: draw edges for all situations:
// 1) draw elements with GL_LINE style as edges from myPArray->bufferVBO[VBOEdges] indicies array
{
glEnableClientState (GL_VERTEX_ARRAY);
glVertexPointer (3, GL_FLOAT, 0, myPArray->vertices); // array of vertices
- glGetIntegerv (GL_RENDER_MODE, &renderMode);
glColor3fv (theEdgeColour->rgb);
if (myPArray->num_bounds > 0)
}
else
{
- DrawElements (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawElements (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
myPArray->bounds[i], (GLenum* )&myPArray->edges[n]);
}
n += myPArray->bounds[i];
{
for (i = n = 0 ; i < myPArray->num_bounds; ++i)
{
- DrawArrays (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawArrays (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
n, myPArray->bounds[i]);
n += myPArray->bounds[i];
}
}
else
{
- DrawElements (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawElements (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
myPArray->num_edges, (GLenum* )myPArray->edges);
}
}
else
{
- DrawArrays (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawArrays (theWorkspace, myPArray, aGlContext->IsFeedback(), myDrawMode,
0, myPArray->num_vertexs);
}
}
else
{
int i,n;
+ Standard_Boolean isFeedback = theWorkspace->GetGlContext()->IsFeedback();
glPushAttrib (GL_POLYGON_BIT);
glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
glVertexPointer (3, GL_FLOAT, 0, myPArray->vertices); // array of vertices
- GLint renderMode;
- glGetIntegerv (GL_RENDER_MODE, &renderMode);
-
if (myPArray->num_bounds > 0)
{
if (myPArray->num_edges > 0)
{
for (i = n = 0; i < myPArray->num_bounds; ++i)
{
- DrawElements (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawElements (theWorkspace, myPArray, isFeedback, myDrawMode,
myPArray->bounds[i], (GLenum* )&myPArray->edges[n]);
n += myPArray->bounds[i];
}
{
for (i = n = 0; i < myPArray->num_bounds; ++i)
{
- DrawArrays (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawArrays (theWorkspace, myPArray, isFeedback, myDrawMode,
n, myPArray->bounds[i]);
n += myPArray->bounds[i];
}
}
else if (myPArray->num_edges > 0)
{
- DrawElements (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawElements (theWorkspace, myPArray, isFeedback, myDrawMode,
myPArray->num_edges, (GLenum* )myPArray->edges);
}
else
{
- DrawArrays (theWorkspace, myPArray, (renderMode == GL_FEEDBACK), myDrawMode,
+ DrawArrays (theWorkspace, myPArray, isFeedback, myDrawMode,
0, myPArray->num_vertexs);
}
// =======================================================================
OpenGl_PrimitiveArray::OpenGl_PrimitiveArray (CALL_DEF_PARRAY* thePArray)
: myPArray (thePArray),
- myDrawMode (GL_NONE)
+ myDrawMode (DRAW_MODE_NONE)
{
switch (myPArray->type)
{
// =======================================================================
void OpenGl_PrimitiveArray::Render (const Handle(OpenGl_Workspace)& theWorkspace) const
{
- if (myPArray == NULL || myDrawMode == GL_NONE)
+ if (myPArray == NULL || myDrawMode == DRAW_MODE_NONE)
return;
// create VBOs on first render call