gpt4 book ai didi

Java openGL - 绘制 3D 对象

转载 作者:行者123 更新时间:2023-12-01 14:51:47 27 4
gpt4 key购买 nike

我想在 openGL 中绘制 3D 对象,但是实现此目的的最佳方法是什么?我正在考虑以 2D 形式绘制它的侧面轮廓,然后可能将其充实为 3D,但这可能吗?我认为这样做会比直接进入 3D 更容易,但如果你不能那么我只是在浪费我的时间。

我也不知道如何添加天空,甚至是带有倒影的大海,这容易完成吗?

<小时/>
   gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(1.0f, 1.0f, 1.0f);

gl.glPushMatrix();
gl.glTranslatef(-1.0f, 0.0f, 0.0f);
gl.glRotatef((float) shoulder, 0.0f, 0.0f, 1.0f);
gl.glTranslatef(1.0f, 0.0f, 0.0f);
// gl.glPushMatrix();
gl.glScalef(2.0f, 0.4f, 1.0f);
glut.glutWireCube(1.0f);
// gl.glPopMatrix();

gl.glTranslatef(1.0f, 0.0f, 0.0f);
gl.glRotatef((float) elbow, 0.0f, 0.0f, 1.0f);
gl.glTranslatef(1.0f, 0.0f, 0.0f);
// gl.glPushMatrix();
gl.glScalef(2.0f, 0.4f, 1.0f);
glut.glutWireCube(1.0f);
// gl.glPopMatrix();

gl.glTranslatef(1.0f, 1.0f, 1.0f);
gl.glRotatef((float) hand, 0.0f, 0.0f, 1.0f);
gl.glTranslatef(1.0f, 0.0f, 0.0f);
// gl.glPushMatrix();
gl.glScalef(2.0f, 0.4f, 1.0f);
glut.glutWireCube(1.0f);
// gl.glPopMatrix();

我刚刚尝试随机数来尝试让它发挥作用,但到目前为止还没有这么幸运!

最佳答案

首先,反射(reflection)可能会很困难,具体取决于您想要如何进行。在尝试类似的事情之前,您肯定需要学习更多 OpenGL。其次,3D 对象需要更多的矩阵内容,这是我的 3D 游戏中的 init 方法的示例:

private void initGl() {
glViewport(0, 0, Display.getWidth(), Display.getHeight());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLU.gluPerspective(45.0f, Display.getWidth() / Display.getHeight(), 1.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClearDepth(1.0f);
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_FOG);
glFogi(GL_FOG_MODE, GL_EXP2);
glFogf(GL_FOG_DENSITY, density);
glHint(GL_FOG_DENSITY, GL_FASTEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
}

在绘制之前,您还需要像这样清除缓冲区:

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

当您说“充实 2D 对象”时,您几乎是正确的。如果我们仍然使用立即模式(glBegin()/glEnd()),您的方法将是正确的。然而,立即模式现在已被弃用,我们通常使用 VBO。如果您使用 LWJGL,我建议您在 YouTube 上搜索 theCodingUniverse,他有一个有关 VBO 和高级渲染的视频,这就是我学习它们的方式!

祝你在 3D 世界里好运,这一点都不容易,但(在我看来)当你让某些东西发挥作用时,它比 2D 更令人满意。

另外,考虑投资红皮书,它都是关于 LWJGL 的。

关于Java openGL - 绘制 3D 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14778809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com