您的位置:首页 > 编程语言 > Java开发

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

2016-01-02 19:59 281 查看
原文: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lwjgl java