【问题标题】:JOGL – Not working colorsJOGL – 不工作的颜色
【发布时间】:2012-03-11 05:49:02
【问题描述】:

刚开始学习JOGL,有一个问题。

下面是GLEventListener的两个方法的简单实现。

@Override
public void init(GLDrawable glDrawable) {

    GL gl = glDrawable.getGL();
    GLU glu = glDrawable.getGLU();

    gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

    glu.gluOrtho2D(0.0, 600.0, 0.0, 500.0);

}

@Override
public void display(GLDrawable glDrawable) {

    GL gl = glDrawable.getGL();
    gl.glPointSize(100.0f);

    gl.glColor3f(0.0f, 1.0f, 0.0f);
    gl.glBegin(GL.GL_POINTS);
    gl.glVertex2i(300, 250);
    gl.glEnd();

    gl.glEnd();

}

这就是我在 JFrame 窗口中插入组件的方式。

package scribble;

import net.java.games.jogl.GLCanvas;
import net.java.games.jogl.GLCapabilities;
import net.java.games.jogl.GLDrawableFactory;
import javax.swing.*;
import java.awt.*;

public class ScribbleComponent extends JFrame {

    public static void main(String[] args) {
        ScribbleComponent component = new ScribbleComponent();
        ScribbleRunnable runnable = new ScribbleRunnable(component);
        SwingUtilities.invokeLater(runnable);
    }

    public ScribbleComponent() {
        super("Scribble");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GLCapabilities glCapabilities = new GLCapabilities();
        GLCanvas glCanvas = GLDrawableFactory.getFactory().createGLCanvas(glCapabilities);
        glCanvas.addGLEventListener(new ScribbleListener());
        getContentPane().add(glCanvas, BorderLayout.CENTER);
        getContentPane().add(new JButton("Clear Screen"), BorderLayout.SOUTH);
        setSize(600, 500);
        ScribbleHelper.centerWindow(this);
    }

}

ScribbleRunnable(component) 使组件可见。

ScribbleHelper.centerWindow(this) 只是 JFrame 窗口的中心。

我希望看到白色背景上的绿色方块。

它在第一台计算机上正常工作,但在第二台计算机上我在黑色背景上得到深红色方块。总是这样,我不能设置任何其他颜色。

两台计算机都运行 Windows 7,使用 JDK 1.6 和相同的库。

问题可能出在哪里?

【问题讨论】:

    标签: java windows-7 jogl jdk1.6


    【解决方案1】:

    你应该实现一个 com.jogamp.opengl.util.FPSAnimator 来不断更新你的 display() 方法。那就看看吧。

    也使用 gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);让您的显示保持干净。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 2022-10-21
      • 2011-09-29
      • 2015-03-23
      • 1970-01-01
      相关资源
      最近更新 更多