Java 我写的simpest jogl代码don';你看不出真实的景象吗?
我尝试编写一段代码,在蓝色框架中显示一个rect: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
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非常困难,所以我已经经历了您现在所经历的所有痛苦。如果您遇到其他问题,请不要犹豫。