Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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

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
Java 我写的simpest jogl代码don';你看不出真实的景象吗?_Java_Opengl_Jogl - Fatal编程技术网

Java 我写的simpest jogl代码don';你看不出真实的景象吗?

Java 我写的simpest jogl代码don';你看不出真实的景象吗?,java,opengl,jogl,Java,Opengl,Jogl,我尝试编写一段代码,在蓝色框架中显示一个rect: import java.awt.Color; import javax.media.opengl.GL; import javax.media.opengl.GLAutoDrawable; import javax.media.opengl.GLCanvas; import javax.media.opengl.GLCapabilities; import javax.media.opengl.GLEventListener; import

我尝试编写一段代码,在蓝色框架中显示一个rect:

 import java.awt.Color;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.sun.opengl.util.Animator;
public class Jojl extends GLCanvas implements GLEventListener {

static final long serialVersionUID = 4262202874615600756L;

public static void main(String[] args) {
    Jojl convas=new Jojl();
    Animator animator=new Animator(convas);
    JFrame jframe=new JFrame("hello JOGL");
    jframe.setVisible(true);
    jframe.setSize(500,500);
    jframe.setVisible(true);
    jframe.setLayout(null);
    JPanel jp=new JPanel();
    jp.setSize(jframe.getSize());
    jframe.add(jp);
    jp.setBackground(Color.BLUE);
    jp.add(convas);
    jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    animator.start();

    }

    public Jojl()
    {
    super( new GLCapabilities());

    }
    @Override
    public void display(GLAutoDrawable arg0) {
        System.out.println("hello");
        GL gl=arg0.getGL();
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
        gl.glRectf(-0.5f,-0.5f,0.5f,0.5f);


    }

    @Override
    public void displayChanged(GLAutoDrawable arg0, boolean arg1, boolean arg2) {

    }

    @Override
    public void init(GLAutoDrawable arg0) {

    }

    @Override
    public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3,
            int arg4) {
        // TODO Auto-generated method stub

    }
}
但这只显示蓝色边框,不显示矩形。

请尝试以下方法:

import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.sun.opengl.util.Animator;
import java.awt.BorderLayout;

public class Jojl extends GLCanvas implements GLEventListener {

    static final long serialVersionUID = 4262202874615600756L;

    public static void main(String[] args) {
        Jojl convas = new Jojl();
        Animator animator = new Animator(convas);
        JFrame jframe = new JFrame("hello JOGL");
        jframe.setVisible(true);
        jframe.setSize(500, 500);
        jframe.setVisible(true);
        jframe.setLayout(null);
        JPanel jp = new JPanel(new BorderLayout()); // 1.              <- HERE
        jp.setSize(jframe.getSize());
        jframe.add(jp);
        // jp.setBackground(Color.BLUE); // 2. rather do that in JOGL
        jp.add(convas);
        jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        animator.start();

    }

    public Jojl() {
        super(new GLCapabilities());
        addGLEventListener(this);  // 2.                              <-- HERE
    }

    @Override
    public void display(GLAutoDrawable arg0) {
        System.out.println("hello");
        GL gl = arg0.getGL();
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
        gl.glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
    }

    @Override
    public void displayChanged(GLAutoDrawable arg0,
            boolean arg1, boolean arg2) {}

    @Override
    public void init(GLAutoDrawable arg0) {}

    @Override
    public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3,
            int arg4) {}
}
导入javax.media.opengl.GL;
导入javax.media.opengl.GLAutoDrawable;
导入javax.media.opengl.GLCanvas;
导入javax.media.opengl.gl功能;
导入javax.media.opengl.GLEventListener;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入com.sun.opengl.util.Animator;
导入java.awt.BorderLayout;
公共类Jojl扩展了GLCanvas实现了GLEventListener{
静态最终长序列版本ID=4262202874615600756L;
公共静态void main(字符串[]args){
Jojl convas=新的Jojl();
Animator Animator=新的动画师(convas);
JFrame JFrame=新JFrame(“hello JOGL”);
jframe.setVisible(true);
jframe.setSize(500500);
jframe.setVisible(true);
jframe.setLayout(空);

JPanel jp=new JPanel(new BorderLayout());//1.您是否尝试设置颜色(glColor3i或类似的颜色)?另外,是否没有任何gl.flush()应该在渲染结束时调用的方法?我添加了flush,但没有改进!欢迎光临。JOGL非常困难,所以我已经经历了您现在所经历的所有痛苦。如果您遇到其他问题,请不要犹豫。