OpenGL GL_LINES Endpunkte nicht an

OpenGL GL_LINES Endpunkte nicht anIch habe Probleme mit der GL_LINES block... die Zeilen im folgenden Beispiel nicht verbinden an den enden (auch wenn es manchmal zufällig entscheidet, um eine Verbindung einer Ecke oder zwei). Stattdessen werden die Endpunkte innerhalb von 1 pixel in einer anderen (aus einer Ecke, die nicht vollständig squared; wenn das Sinn macht). Es ist ein einfacher block zum zeichnen ein solides 1-pixel-Rechteck.

 glBegin(GL_LINES);

  glColor3b(cr, cg, cb);

  glVertex3i(pRect->left, pRect->top, 0);
  glVertex3i(pRect->right, pRect->top, 0);

  glVertex3i(pRect->right, pRect->top, 0);
  glVertex3i(pRect->right, pRect->bottom, 0);

  glVertex3i(pRect->right, pRect->bottom, 0);
  glVertex3i(pRect->left, pRect->bottom, 0);

  glVertex3i(pRect->left, pRect->bottom, 0);
  glVertex3i(pRect->left, pRect->top, 0);

 glEnd();

Dem folgenden Beispiel scheint das problem zu beheben, gibt mir scharfe, eckige Ecken, aber ich kann es nicht akzeptieren, weil ich weiß nicht, warum es auf diese Weise handeln...

 glBegin(GL_LINES);

  glColor3b(cr, cg, cb);

  glVertex3i(pRect->left, pRect->top, 0);
  glVertex3i(pRect->right + 1, pRect->top, 0);

  glVertex3i(pRect->right, pRect->top, 0);
  glVertex3i(pRect->right, pRect->bottom + 1, 0);

  glVertex3i(pRect->right, pRect->bottom, 0);
  glVertex3i(pRect->left - 1, pRect->bottom, 0);

  glVertex3i(pRect->left, pRect->bottom, 0);
  glVertex3i(pRect->left, pRect->top - 1, 0);

 glEnd();

Jedem OpenGL Programmierer gibt, die helfen kann, würde ich mich freuen 🙂

Dem Bild ist ein Zoom-in Ansicht einen screenshot. Wie Sie sehen können, die Obere linke Ecke ist nicht angeschlossen. Der oberen rechten Ecke ist. Nicht zu sehen sind unten Links und rechts, die nicht miteinander verbunden sind.

Viewport-setup ist eine 1 zu 1 pixel pro koordinieren.

glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, __nRendererWidth, __nRendererHeight, 0, -1, 100);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glEnable (GL_TEXTURE_2D);
  • Screenshot? Alle anderen relevanten GL-setup code?
  • Welche video-Treiber verwenden Sie? Dieser sieht aus wie ein bug, wenn es wirkt sich auf GL_LINE_LOOP als gut.
  • ATI OpenGL 6.14.10.9704..., die Verknüpfung zu der Standard-opengl32.lib mit Visual Studio 2008
  • Ich lief auf meine Freundin, die computer... Sie hat auch eine ATI display-Treiber, und es Tat das gleiche auf Ihr... ich bin zu versuchen, es auf einem nVidia display
  • Gleich auf nVidia... mich verrückt
  • ok... was ist die Linienbreite eingestellt? (glLineWidth- Funktion) Wirkt sich eine änderung gib es unterschiedliche Ergebnisse?
  • Sie haben Texturierung aktiviert beim zeichnen der Linien?

InformationsquelleAutor oldSkool | 2010-12-26
Schreibe einen Kommentar