Sign in to follow this  
superwave

OpenGL Strange problem about OpenGL drawing in a QGraphicsView.

Recommended Posts

[color=#666666]OpenGL rendering is done by reimplementing QGraphicsScene's drawBackground() function. I also add two QGraphicsRectItem in the QGraphicsScene, one embeded a dialog with four buttons in it; another is a yellow Solid circle.[/color]
[color=#666666]when the opengl codes are as follows included in drawBackground() of QGraphicsScene,[/color]

[source lang="cpp"]MTList=glGenLists(1);
glEnableClientState(GL_VERTEX_ARRAY);
Vertex_iterator vi = model.vertices_begin();
glVertexPointer(3, GL_DOUBLE, sizeof(Vertex), &(vi->point()[0]));
glDisable(GL_LIGHTING);
glNewList(MTList, GL_COMPILE);
glColor3f(1.0,0.0,1.0);
//glLineWidth(10.0);
//glDisable(GL_CULL_FACE);
//glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawElements(GL_POINTS, 3*model.size_of_facets(), GL_UNSIGNED_INT, &modelfaces[0]); glEndList();
glDisableClientState(GL_VERTEX_ARRAY);[/source]

[color=#666666]at this time, the two items in QGraphicsScene display as expected: [/color]
[color=#666666][img]http://uploads.gamedev5.net/gallery/album_467/gallery_200313_467_12630.jpg[/img][/color]

[color=#666666][background=rgb(247, 247, 247)]However, when I uncomment //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE): [/background][/color]

[source lang="cpp"]
glColor3f(1.0,0.0,1.0);
//glLineWidth(10.0);
//glDisable(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glDrawElements(GL_POINTS, 3*model.size_of_facets(), GL_UNSIGNED_INT, &modelfaces[0]);[/source]

[color=#666666](I know I should also change GL_TRIAGNLES, however the result is the same.) then the two items as distorted like two slashes: [/color]

[color=#666666][img]http://uploads.gamedev5.net/gallery/album_467/gallery_200313_467_2080.jpg[/img][/color]

[color=#666666][background=rgb(247, 247, 247)]Why this weird display occur ?[/background][/color]

[color=#666666]Thanks a lot[/color] Edited by superwave

Share this post


Link to post
Share on other sites
I revised the line to : glPolygonMode(GL_BACK, GL_LINE); the problem still exists,

HHHOoooWWwwever, glPolygonMode(GL_FRONT, GL_LINE); sloved the problem and the two items come out to be as expected.

Why?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this