我想繪製一個5指向明星形狀在openGL(Java)中,這是充滿和概述。我使用的代碼繪製它OpenGL填充多邊形顏色「流血」
gl.glPushAttrib(GL.GL_ALL_ATTRIB_BITS);
try {
// set attributes for filling the shape
Color fillColor = Color.GREEN;
float[] rgb = fill.getRGBColorComponents(null);
gl.glColor4f(rgb[0], rgb[1], rgb[2], 1f);
gl.glEnable(GL.GL_POLYGON_SMOOTH);
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL);
gl.glEnable(GL.GL_POLYGON_OFFSET_FILL);
gl.glCallList(this.glListId);
// set attributes for outlining the shape
gl.glEnable(GL.GL_LINE_SMOOTH);
Color outline = Color.RED;
float[] rgb = outline.getRGBColorComponents(null);
gl.glColor4f(rgb[0], rgb[1], rgb[2], 1f);
gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE);
gl.glLineWidth(5);
gl.glCallList(this.glListId);
}
finally {
gl.glPopAttrib();
}
通話清單的建立只是看起來像:
gl.glNewList(this.glListId, GL.GL_COMPILE);
gl.glBegin(GL.GL_POLYGON);
for (int j = 0; j < xCoords.length; j++) {
// 2d polygon
gl.glVertex2d(xCoords[j], yCoords[j]);
}
gl.glEnd();
當我這樣做,明星的輪廓繪製完美,但填充顏色會在輪廓邊緣外出血(如果我在沒有輪廓的情況下繪製它,那麼多邊形的外觀也不會很明顯)。任何想法爲什麼?
編輯:我添加了一個屏幕截圖顯示
感謝這個問題, 傑夫
出血?截圖? – genpfault 2011-04-13 20:49:25
添加屏幕截圖。 – 2011-04-13 21:25:08
您是否嘗試過使用簡單的'GL_TRIANGLE_FAN'? – Marnix 2011-04-13 21:30:24