Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 已绘制二次圆盘,但填充颜色不是实心_Opengl_Jogl - Fatal编程技术网

Opengl 已绘制二次圆盘,但填充颜色不是实心

Opengl 已绘制二次圆盘,但填充颜色不是实心,opengl,jogl,Opengl,Jogl,作为一个完全的OpenGL新手,我有一个问题我不知道如何解决。我正在使用JOGL,并试图绘制一个磁盘,填充了纯色和不同的边框颜色。我的问题在下图中显而易见: 我不能理解的是为什么我仍然能看到GLU产生的线条。绘制此图的代码如下所示: glColor3ub(r, g, b); // purple gluDisk(quadric, 0, 50, 32, 2); glColor3ub(r, g, b); // dark gray gluDisk(quadric, 49, 50, 32, 2);

作为一个完全的OpenGL新手,我有一个问题我不知道如何解决。我正在使用JOGL,并试图绘制一个磁盘,填充了纯色和不同的边框颜色。我的问题在下图中显而易见:

我不能理解的是为什么我仍然能看到GLU产生的线条。绘制此图的代码如下所示:

glColor3ub(r, g, b); // purple
gluDisk(quadric, 0, 50, 32, 2);

glColor3ub(r, g, b); // dark gray
gluDisk(quadric, 49, 50, 32, 2);
我怀疑我在混合/消除混叠方面做错了什么。当我禁用抗锯齿时,形状是用纯色绘制的;但是我需要AA。我已设置AA和混合,如下所示:

glEnable(GL2.GL_BLEND);
glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA);

glEnable(GL2.GL_LINE_SMOOTH);
glHint(GL2.GL_LINE_SMOOTH_HINT, GL2.GL_NICEST);

glEnable(GL2.GL_POLYGON_SMOOTH);
glHint(GL2.GL_POLYGON_SMOOTH_HINT, GL2.GL_NICEST);
最后,使用以下GLCanvas功能创建我的GLCanvas:

caps.setAlphaBits(16);
caps.setDoubleBuffered(true);
caps.setHardwareAccelerated(true);
除此之外,二次渲染属性是默认属性。有人知道我做错了什么吗?对于可能丢失的任何信息,我深表歉意!谢谢你的阅读


伊利亚斯

罪魁祸首是格卢·多角形·光滑。平滑从来都不是无痛的,像你看到的那些人工制品就是这样的结果。一种更好的抗锯齿方法是多重采样。这里有一个教程