java - Jogl 四边形问题

标签 java opengl jogl

我是 OpenGL 的新手,正在尝试使用 jogl。我可以毫无问题地绘制三角形,但是当我尝试绘制四边形(在许多教程中使用)时,Eclipse 一直告诉我 GL.GL_QUADS 无法解析。

gl.glBegin(GL.GL_QUADS);

不知道我做错了什么。

谢谢

import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas;
import com.jogamp.opengl.util.*;

public class SimpleScene implements GLEventListener {
    public static void main(String[] args) {
        GLProfile glp = GLProfile.getDefault();
        GLCapabilities caps = new GLCapabilities(glp);
        GLCanvas canvas = new GLCanvas(caps);

        final Frame frame = new Frame("AWT Window Test");
        frame.setSize(300, 300);
        frame.add(canvas);
        frame.setVisible(true);

        // by default, an AWT Frame doesn't do anything when you click
        // the close button; this bit of code will terminate the program when
        // the window is asked to close
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                frame.dispose();
                System.exit(0);
            }
        });
    canvas.addGLEventListener(new SimpleScene());
    FPSAnimator animator = new FPSAnimator(canvas, 60);
    animator.add(canvas);
    animator.start();
    }

    @Override
    public void display(GLAutoDrawable arg0) {
        update();
        render(arg0);
    }

    private void update() {
        // TODO Auto-generated method stub

    }
    private void render(GLAutoDrawable drawable) {
        GL2 gl = drawable.getGL().getGL2();
//      gl.glViewport(0, 0, 300, 300); //Possibly use to move around object
        gl.glClear(GL.GL_COLOR_BUFFER_BIT);

        gl.glPushMatrix();
        gl.glTranslatef(-1.5f,1.5f,0.0f);                  // Move left 1.5 units, up 1.5 units, and back 8 units

        gl.glBegin(GL.GL_TRIANGLES); 
        gl.glColor3f(10, 0, 0);
// Begin drawing triangles
        gl.glVertex3f( 0.0f, 1.0f, 0.0f);                   // Top vertex
        gl.glVertex3f(-1.0f,-1.0f, 0.0f);                   // Bottom left vertex
        gl.glVertex3f( 1.0f,-1.0f, 0.0f);                   // Bottom right vertex
        gl.glEnd();                                         // Finish drawing triangles
        gl.glPopMatrix();


    }

    @Override
    public void dispose(GLAutoDrawable arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void init(GLAutoDrawable arg0) {
        // TODO Auto-generated method stub

    }

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

    }
}

最佳答案

javax.media.opengl.GL 接口(interface)包含 GL 3、GL 2、GL ES 2.0 和 GL ES 1.x 通用的 OpenGL 子集,而 GL_QUADS 不属于该子集。

如果您使用 javax.media.opengl.GL2,您将获得 GL2.GL_QUADS。

关于java - Jogl 四边形问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212493/

相关文章:

Java:使用 HTTPS 和客户端证书访问 Web 服务

java - Jsoup 解析器仅针对特定 URL 无法按预期工作

css - Qt StyleSheet 自定义样式属性自定义QGLwidget

java - Java OpenGL 绑定(bind)中的 GLU.gluLookAt 似乎什么都不做

opengl - 在OpenGL中更新纹理的有效方法

java - 为什么 JPopupMenu 在渲染之前要经过 2 遍 UIThread?

java - 无法在Tomcat服务器中运行Maven Spring MVC项目

c++ - Assimp 加载顶点,但模型未显示

c++ - 'O_RDONLY', `F_SETFL` , 'O_NONBLOCK' 遵循 OpenGL 教程时未声明的错误

java - 将 PNG 加载到 OpenGL 性能问题 - Java 和 JOGL 比 C# 和 Tao.OpenGL 慢得多