OpenGL Linienbreite
In meiner OpenGL-app, es lässt mich nicht ziehen Sie eine Linie größer ist als zehn Pixel breit. Gibt es einen Weg zeichnen mehr als zehn Pixel?
void OGL_Renderer::drawLine(int x, int y, int x2, int y2, int r, int g, int b, int a, int line_width)
{
glColor4ub(r, g, b, a);
glLineWidth((GLfloat)line_width);
glBegin(GL_LINES);
glVertex2i(x, y);
glVertex2i(x2, y2);
glEnd();
glLineWidth(1.0f);
}
- äh.. was? Vielleicht sollten Sie einen code-snippet...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, die Zeichnung eines quad-Wertes. Machen Sie es so breit wie Sie möchten, dass Ihre Linie zu sein, lang und groß wie die Linienbreite, die Sie brauchen, dann drehen und positionieren Sie es, wo die Linie gehen würde.
Ah, jetzt habe ich verstanden was du gemeint hast:
oder:
3 - Holen Sie sich orthogonal (normal) der Vektor : a (einfach in 2d)
Macht es Sinn, dass Sie nicht können. Aus der glLineWidth Referenz:
Dem Bereich der unterstützten Breite und die Größe Unterschied zwischen unterstützten breiten im Bereich abgefragt werden können durch aufrufen von glGet mit Argumenten GL_LINE_WIDTH_RANGE und GL_LINE_WIDTH_GRANULARITY.
GL_LINE_WIDTH_RANGE
, aberGL_ALIASED_LINE_WIDTH_RANGE
undGL_SMOOTH_LINE_WIDTH_RANGE
.GL_LINE_WIDTH_RANGE
undGL_LINE_WIDTH_GRANULARITY
wurden ersetzt durchGL_ALIASED_LINE_WIDTH_RANGE
,GL_SMOOTH_LINE_WIDTH_RANGE
, undGL_SMOOTH_LINE_WIDTH_GRANULARITY
. Die alten Namen sind aus Gründen der Abwärtskompatibilität beibehalten werden, sollte aber nicht verwendet werden, die im neuen code."