gpt4 book ai didi

java - OpenGL初始化方法

转载 作者:行者123 更新时间:2023-12-01 14:52:07 25 4
gpt4 key购买 nike

我已经用 OpenGL 编码几个月了,主要从事 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);

vbo = new VBO();
}

这一切有必要吗?我想知道我是否在正确的位置调用 loadIdentity() ,我是否也应该在 gluPerspective 之后调用它?基本上,什么时候调用 loadIdentity() 合适?

最佳答案

OpenGL 新手的一个常见误解是,OpenGL 是以某种方式“初始化”的。 OpenGL 是一个基于状态的绘图机。这意味着“init”函数中的所有这些函数都设置了一些与绘图相关的状态。状态机的奇特之处在于,在实际使用时,您可以在每次需要时设置所有状态,就在您需要时。或者换句话说:不存在“OpenGL 初始化”阶段之类的东西。 “init”函数中的大多数调用实际上属于绘图代码。

主要的异常(exception)是真正一次性初始化的 OpenGL 对象,例如纹理或 VBO。

关于java - OpenGL初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739833/

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