【发布时间】:2014-01-08 04:36:51
【问题描述】:
我正在与 LWJGL 合作制作游戏。这是非常基本的。在实现任何类型的 gpu 渲染或花哨的模型加载器之前,我想确保我至少可以同时渲染 2D 和 3D;当你四处走动时,我的游戏有一个 gui。或者至少,它应该是。这是我的初始化代码;当我只渲染 3D 时,不会发生闪烁。
public void clearGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
}
public void init3D() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective((float) 68, Engine.size[0] / Engine.size[1], 0.3f, 1000);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
}
public void render3D(Camera c) {
init3D();
clearGL();
//Do translations here
glTranslatef(0f, -5f, 0f);
glColor3f(0, 1, 0);
glBegin(GL_QUADS);
glVertex3f(-50f, 0f, -50f);
glColor3f(0, 0, 1);
glVertex3f(50f, 0f, -50f);
glColor3f(1, 0, 0);
glVertex3f(50f, 0f, 50f);
glColor3f(0, 1, 1);
glVertex3f(-50f, 0f, 50f);
glEnd();
}
public void init2D() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Engine.size[0], 0, Engine.size[1], -1, 1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glLoadIdentity();
}
public void render2D() {
init2D();
glBegin(GL_QUADS);
glVertex2f(0f, 50f);
glVertex2f(50f, 50f);
glVertex2f(50f, 0f);
glVertex2f(0f, 0f);
glPopMatrix();
}
我完全可以分辨出它的渲染,因为我正在绘制一个四边形来表示 JBullet 中的地板。出于某种原因,它位于相机头部上方,但是当我将相机向上平移时,它会变得更远,这就是我将相机转换为 -5 的原因。那是另一个问题,改天。
【问题讨论】:
标签: java opengl 3d buffer lwjgl