Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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
Java JOGL多边形抗锯齿_Java_Opengl_Jogl - Fatal编程技术网

Java JOGL多边形抗锯齿

Java JOGL多边形抗锯齿,java,opengl,jogl,Java,Opengl,Jogl,我正试图在我的OpenGL应用程序中使用抗锯齿,但不管我怎么做,似乎都不管用 我最近的尝试是: gl.glEnable(GL.GL_BLEND); gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA); gl.glEnable(GL2.GL_POLYGON_SMOOTH); gl.glHint(GL2.GL_POLYGON_SMOOTH_HINT, GL.GL_NICEST); 其中(部分)我的多边形代码是: gl.glBegin

我正试图在我的OpenGL应用程序中使用抗锯齿,但不管我怎么做,似乎都不管用

我最近的尝试是:

gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL2.GL_POLYGON_SMOOTH);
gl.glHint(GL2.GL_POLYGON_SMOOTH_HINT, GL.GL_NICEST);
其中(部分)我的多边形代码是:

gl.glBegin(GL_QUADS);
    gl.glColor3f(0.1f, 0.1f, 0.1f); // asphalt grey
    gl.glVertex3f(3.0f, 0.06f, 0.0f);
    gl.glVertex3f(3.0f, -0.06f, 0.0f);
    gl.glVertex3f(-3.0f, -0.06f, 0.0f);
    gl.glVertex3f(-3.0f, 0.06f, 0.0f);
gl.glEnd();
但这绝对没有效果!我仍然能看到这个可怕的、参差不齐的画面:

我也试过了

gl.glBlendFunc(GL.GL_SRC_ALPHA_SATURATION, GL.GL_ONE); 
根据,但这只会产生一个没有任何内容的黑屏

我已经试过了

gl.glDisable(GL.GL_DEPTH_TEST);
在启用混合之前,它再次什么也不做


我做错了什么?

首先,您需要一种带有目标alpha的像素格式来使用alpha饱和混合模式。这意味着您的帧缓冲区必须存储alpha通道。由于目标alpha通道没有很多常见用途,因此通常只使用RGB通道设置帧缓冲区。你能把你的像素格式添加到问题中吗?你读过关于多样本扩展的文章吗@ravuya:
GL_POLYGON_SMOOTH
适用于任何填充图元。它不适用于直线或点。这两种基本体有单独的平滑状态。很抱歉,编辑了我的原始帖子以删除该信息。谢谢你的更正@Coleman我还没有明确设置像素格式,我也不知道如何设置。您能否提供有关如何设置像素格式的说明?