java - 使用轻量级 java 游戏库与 3d 图形进行更多斗争

标签 java 3d window lwjgl

我在用 java 渲染 3d 对象时遇到了更多麻烦,这是我的新问题 我设法导入了所需的库(gluPerspective 等)但是当我在 eclipse 环境中运行我的 java 应用程序时,它会打开一个窗口,然后窗口保持黑色。这是我的代码:

    package test;

    import org.lwjgl.LWJGLException;
    import org.lwjgl.opengl.Display;
    import org.lwjgl.opengl.DisplayMode;
    import org.lwjgl.opengl.GL11;
    import org.lwjgl.util.glu.GLU;

    public class Obj3d {
        public static void main(String[] args) {
            Obj3d obj = new Obj3d();
            obj.start();
        }

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

            init3dGL();

            while(!Display.isCloseRequested()) {
                clear();
                renderCube();
                Display.update();
            }

            Display.destroy();
            System.exit(0);
        }

        public void init3dGL() {
            GL11.glMatrixMode(GL11.GL_PROJECTION);
            GL11.glLoadIdentity();
            GLU.gluPerspective(45, 2, -1, 100);
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            GL11.glDepthFunc(GL11.GL_LEQUAL);
            return;
        }

        public void renderCube() {
            GL11.glBegin(GL11.GL_QUADS);
                //front faces
                GL11.glNormal3d(0, 0, 1);
                GL11.glColor3d(0.0, 1.0, 1.0);
                GL11.glVertex3d(5, 5, -5);
                GL11.glVertex3d(-5, 5, -5);
                GL11.glVertex3d(-5, -5, -5);
                GL11.glVertex3d(5, -5, -5);
            GL11.glEnd();
            return;
        }

        public void clear() {
            GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
        }

    }

我在上面的编码中看不到我的错误,但是我是 lwjgl 3d 编程的新手,所以这可能是因为我缺乏经验。请耐心等待,虽然我学得很快。提前致谢。

最佳答案

我认为使用负近距离并不是一个好主意。尝试

GLU.gluPerpective(45, 2, 0.1, 100);

其中的 2 实际上应该是您的窗口的宽高比(宽度/高度),在您的情况下为 1.333 = 800/600

关于java - 使用轻量级 java 游戏库与 3d 图形进行更多斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8101562/

相关文章:

java - Android Studio 无法解析方法 SetOnItemClickListener (Java)

java - 使用 Contains 方法过滤输入的多个不同行

iphone - 如何在 iPhone 上实现 AABB 光线转换命中检查

javascript - jQuery在计算窗口高度后将div放置在特定位置

c# - SetWindowPos 不改变最大化状态

java - 简单的 GUI 没有显示?

java - DatagramPacket 未传输正确的消息

python - 处理 xyz 数据的最佳方法

javascript - 将 .json 模型导入 Three.js

wpf - 在 WPF-Window 中使用 Microsoft Windows 标准样式?