在Java中启用OpenGL使带有图形的JPanel的边缘被切断

在Java中启用OpenGL使带有图形的JPanel的边缘被切断,java,windows,swing,opengl,graphics2d,Java,Windows,Swing,Opengl,Graphics2d,我正在用Java Graphics2D做一个游戏作为学校作业。当我在主要方法的开头添加以下行以提高性能时 System.setProperty("sun.java2d.opengl", "true"); 图形面板的边缘被切断 我制作了一个小程序来显示效果: import java.awt.*; import java.awt.geom.*; import javax.swing.*; public class Main extends JPanel {

我正在用Java Graphics2D做一个游戏作为学校作业。当我在主要方法的开头添加以下行以提高性能时

System.setProperty("sun.java2d.opengl", "true");
图形面板的边缘被切断

我制作了一个小程序来显示效果:

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class Main extends JPanel {

    public Main() {
        JFrame frame = new JFrame("OpenGL off");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        setPreferredSize(new Dimension(800, 600));
    
        frame.add(this);
        frame.pack();
        frame.setVisible(true);
    }

    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;

        g2.setPaint(Color.RED);
        g2.setStroke(new BasicStroke(5.0f));
        g2.draw(new Ellipse2D.Double(0, 0, 800, 600));
    }

    public static void main(String[] args) {
        // Enables hardware acceleration
        System.setProperty("sun.java2d.opengl", "true");
    
        new Main();
    }
}
没有OpenGL:

已启用OpenGL:

这个问题出现在Windows上,而不是Mac上

Java版本:Java 11,操作系统:Windows 10


编辑:Java 14也出现了这个问题。

我发现Oracle的一些文档说,这个命令可能不适用于某些硬件配置或Java版本。正如您所说,它更方便,您可能只是在错误的Java版本或不支持这个命令的Java版本中使用它我建议您查看以下文档:
您可能需要升级Java版本,或者只使用MAC操作系统,因为这似乎运行良好。我建议阅读文档,因为它包含一些可靠的信息。长话短说,这可能是你这边的一个问题,你应该研究以找到替代方案,或者干脆解决。我也是一名刚开始编程生涯的学生,我刚刚决定尝试解决一个问题,我希望我能帮上忙?

你用什么版本的Java进行编译?我不能用Java 8和Windows 10重复这个问题。我建议您通过调用SwingUtilities invokeLater方法来启动应用程序,以确保Swing组件是在上创建和执行的。您首先为什么要使用该属性?您是否遇到Direct3D管道的任何性能问题?哪个Java版本,哪个OS版本?是否正在进行UI(DPI)缩放?仍然无法复制。唯一可能不同(并且可能影响结果)的是图形卡驱动程序。