用JOGL做简单的3D场景
制作3D场景先确定xyz坐标系,本文用的是右手原则的坐标系,如图

然后确定好自己要画的物体在该坐标系中对应的坐标就可以开始了;本文画的是非常简单的房子。
实现
继承GLEventListener,实现它的4个接口
首先画一个地板,在display(GLAutoDrawable drawable)中用4个glVertex3f()来构建一个平面,参数分别对应x, y, z
//drawfloor
gl.glBegin(GL2.GL_QUADS);
gl.glColor3f(0.35f, 0.16f, 0.14f);
gl.glVertex3f(-100.0f, -1.0f, -100.0f);
gl.glVertex3f(-100.0f, -1.0f, 100.0f);
gl.glVertex3f(100.0f, -1.0f, 100.0f);
gl.glVertex3f(100.0f, -1.0f, -100.0f);
注意:因为OpenGL是C++的库,所以用JAVA写的时候需要导入的是JOGL,而且需要加上GL2 gl = drawable.getGL().getGL2();才能使用OpenGL的各个方法
然后用相同的方法画房子主体和屋顶,因为需要改变的只有各个点的坐标,所以就只放实现房顶正面的代码(和画地板是一样的)
画图的方法有很多,网上都能找到,注意:在每次画完一个图形之后,如果需要用glTranslatef()移动或者glBegin()画一个新的图形,需要添加gl.glLoadIdentity();
//roof front
gl.glColor3f(1.0f, 0.0f, 0.0f); //
gl.glVertex3f( 2.0f,

这篇博客介绍了如何利用JOGL库在Java中构建一个简单的3D场景,包括右手坐标系的选择、绘制3D房屋和平面,并通过GLEventListener接口实现。内容涉及深度测试、投影类型(透视和正交)、相机位置与视角调整,以及键盘监听来控制视角变化。
最低0.47元/天 解锁文章
3122

被折叠的 条评论
为什么被折叠?



