无法通过vertex2i显示带有jogl的点

时间:2014-09-15 20:33:06

标签: jogl

我已经阅读了很多使用jogl的指南..但是我对所有演示应用程序都有同样的问题......

当我用jogl启动一个简单的应用程序并尝试用尺寸为500x500的窗口显示坐标(0,0),(10,15),(100,150)的3个点时,我只能看到(0,0)点。但如果我将坐标除以100,那么我就能看到所有点...为什么有一个巨大的尺度以及如何关闭?

import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.*;
import java.awt.*;

public class SimpleApp implements GLEventListener {

    public static void main(String[] args) {
        GLProfile glp = GLProfile.getDefault();
        GLCapabilities caps = new GLCapabilities(glp);
        GLCanvas canvas = new GLCanvas(caps);
        canvas.addGLEventListener(new SimpleApp());
        canvas.setPreferredSize(new Dimension(500,500));

        final JFrame frame = new JFrame();
        frame.getContentPane().add(canvas, BorderLayout.CENTER);
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        SwingUtilities.invokeLater(
                new Runnable() {
                    public void run() {
                        frame.setVisible(true);
                    }
                }
        );
    }


    @Override
    public void init(GLAutoDrawable glAutoDrawable) {

    }

    @Override
    public void dispose(GLAutoDrawable glAutoDrawable) {

    }

    @Override
    public void display(GLAutoDrawable glAutoDrawable) {
        GL2 gl2 = glAutoDrawable.getGL().getGL2();

        gl2.glColor3d(1,0.5,1);
        gl2.glBegin(GL.GL_POINTS);
        gl2.glVertex2i(0,0);
        gl2.glVertex2i(1,1);
        gl2.glVertex2i(1,2);
        gl2.glEnd();
    }

    @Override
    public void reshape(GLAutoDrawable glAutoDrawable, int i, int i2, int i3, int i4) {

    }
}

1 个答案:

答案 0 :(得分:0)

你的观点必须在你的观点中。使用JOGL需要清楚地了解OpenGL等计算机图形。您可以查看我的简单示例here。您应该学习如何设置视口,投影矩阵和模型视图矩阵。

此外,应在its official forum上询问JOGL特有的问题。