【LWJGL2 WIKI】【基础篇】基础3:方形
2016-01-02 19:59
281 查看
原文:http://wiki.lwjgl.org/wiki/LWJGL_Basics_3_%28The_Quad%29
所有OpenGL1.1的方法都会在类GL11里找到,OpenGL1.2的方法在GL12类里可以找到,以此类推。这样可以很方便地找到需要的OpenGL版本或扩展。
下面的代码需要在主循环里每帧调用,先清屏,再设置方形颜色,最后画方形的顶点。
这样就可以了。LWJGL Javadoc里将列出LWJGL里支持的全部类和方法,可以用来参考寻找相应的OpenGL函数。
上面一行导入代码将GL11所有方法导入,这样就不用再写类名了。代码可以像下面这样写:
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相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树