如何解决OpenGL填充多边形颜色“渗色”
| 我正在尝试在openGL(Java)中绘制一个五角形的星形形状,该形状既填充又概述了轮廓。我用来绘制的代码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],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();
当我这样做时,星形轮廓会完美地绘制,但是填充颜色会在轮廓边缘之外渗出(如果我绘制时没有轮廓,多边形看起来也不会清晰)。有什么想法吗?
编辑:我添加了显示问题的屏幕截图
谢谢,
杰夫
解决方法
根据“星形”的含义,请记住
GL_POLYGON
只能正确渲染凸多边形:
GL_POLYGON
:
绘制单个凸多边形。
顶点1到N定义了这个
多边形。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。