【LWJGL2 WIKI】【基础篇】基础3:方形

这篇教程介绍了如何在LWJGL中利用OpenGL绘制方形,详细讲解了OpenGL方法的组织结构,并提供了一个简单的绘制方形的示例代码,包括设置正交矩阵和颜色。此外,还提到了静态导入来简化代码编写。
摘要由CSDN通过智能技术生成

原文:http://wiki.lwjgl.org/wiki/LWJGL_Basics_3_%28The_Quad%29

Introduction 介绍

本教程教你怎样在LWJGL里使用OpenGL,但是并不教你OpenGL。LWJGL里的OpenGL API和C语言版本完美地一一对应。这样就不用去专门找LWJGL版OpenGL网上教程了,找个其他的OpenGL教程也是可以通用的。

Structure 构造

所有OpenGL方法都在 org.lwjgl.opengl.* 包里,并且有着相应的包名,比如:GL11,GL12,GL13,GL20.ARBVertexShader,ARBFragmentShader等等。
所有OpenGL1.1的方法都会在类GL11里找到,OpenGL1.2的方法在GL12类里可以找到,以此类推。这样可以很方便地找到需要的OpenGL版本或扩展。

Drawing a Quad with OpenGL 用OpenGL画方形

只需要改改Display教程里的代码,就可以画出方形。2D视图足以画出方形了,需要设置一个正交矩阵,尺寸是800x600,修剪范围是1到-1。只需要在循环之外设置一次就可以。

GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 0, 600, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);

下面的代码需要在主循环里每帧调用,先清屏,再设置方形颜色,最后画方形的顶点。

// Clear the screen and depth buffer
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);  

// set the color of the quad (R,G,B,A)
GL11.glColor3f(0.5f,0.5f,1.0f);

// draw quad
GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2f(100,100);
    GL11.glVertex2f(100+200,100);
    GL11.glVertex2f(100+200,100+200);
    GL11.glVertex2f(100,100+200);
GL11.glEnd();

Example 例子

以下是完整的例子代码:

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

public class QuadExample {

    public void start() {
        try {
        Display.setDisplayMode(new DisplayMode(800,600));
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
        System.exit(0);
    }

    // init OpenGL
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, 800, 0, 600, 1, -1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);

    while (!Display.isCloseRequested()) {
        // Clear the screen and depth buffer
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);  

        // set the color of the quad (R,G,B,A)
        GL11.glColor3f(0.5f,0.5f,1.0f);

        // draw quad
        GL11.glBegin(GL11.GL_QUADS);
            GL11.glVertex2f(100,100);
        GL11.glVertex2f(100+200,100);
        GL11.glVertex2f(100+200,100+200);
        GL11.glVertex2f(100,100+200);
        GL11.glEnd();

        Display.update();
    }

    Display.destroy();
    }

    public static void main(String[] argv) {
        QuadExample quadExample = new QuadExample();
        quadExample.start();
    }
}

这样就可以了。LWJGL Javadoc里将列出LWJGL里支持的全部类和方法,可以用来参考寻找相应的OpenGL函数。

Static Import

所有要使用的OpenGL方法都是静态方法,也就是说每次写方法前都要写一遍类名。根据不同人的编码习惯,你可能会觉得每次都写方法名太麻烦。Java的静态引入功能可以解决这个麻烦。

import static org.lwjgl.opengl.GL11.*;

上面一行导入代码将GL11所有方法导入,这样就不用再写类名了。代码可以像下面这样写:

// clear the screen and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

// set the color of the quad (R,G,B,A)
glColor3f(0.5f,0.5f,1.0f);

// draw quad
glBegin(GL_QUADS);
    glVertex2f(100,100);
    glVertex2f(100+200,100);
    glVertex2f(100+200,100+200);
    glVertex2f(100,100+200);
glEnd();

Credit

Tutorial Credit - Ninja Cave

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值