gpt4 book ai didi

OpenGL 已弃用的函数以及 gluPerspective 和 Transform

转载 作者:行者123 更新时间:2023-12-02 02:21:48 26 4
gpt4 key购买 nike

我是 OpenGL 新手,仍在尝试基本形状。我有时会发现许多函数,例如 glEnd 等,OpenGL 3+ 文档中未提及这些函数。它们被其他功能取代了吗?或者我必须手动编写它们?是否有使用 OpenGL 3+ 的在线教程?

至于“gluPerspective”,我读到它在 Opengl 3+ 中没有使用。它不应该是 GLUT 中的一个单独的函数吗?它与 OpenGL 3+ 有什么关系?最后,Transform( Width, Height ); 是什么意思?做? (我在下载的一些示例代码中找到了它,但在 GLUT 或 OpenGL 中找不到它)。

这是代码:

GLvoid Transform(GLfloat Width, GLfloat Height)
{
glViewport(00, 00, Width, Height); /* Set the viewport */
glMatrixMode(GL_PROJECTION); /* Select the projection matrix */
glLoadIdentity(); /* Reset The Projection Matrix */
gluPerspective(20.0,Width/Height,0.1,100.0); /* Calculate The Aspect Ratio Of The Window */
glMatrixMode(GL_MODELVIEW); /* Switch back to the modelview matrix */
}


/* A general OpenGL initialization function. Sets all of the initial parameters. */
GLvoid InitGL(GLfloat Width, GLfloat Height)
{
glClearColor(0.0, 0.0, 0.0, 0.0); /* This Will Clear The Background Color To Black */
glLineWidth(2.0); /* Add line width, ditto */
Transform( Width, Height ); /* Perform the transformation */
}

/* The function called when our window is resized */
GLvoid ReSizeGLScene(GLint Width, GLint Height)
{
if (Height==0) Height=1; /* Sanity checks */
if (Width==0) Width=1;
Transform( Width, Height ); /* Perform the transformation */
}

最佳答案

I sometimes find many functions like glEnd and many more, that are not mentioned in the OpenGL 3+ documentation. Were they replaced by other functions?

它们已被完全删除,因为它们的工作方式不能很好地反射(reflect)现代图形系统在硬件和软件方面的工作方式。 glBegin(…) 和 glEnd() 形成了所谓的立即模式的环境:每次调用都会引发一个操作。这反射(reflect)了大约 20 年前早期图形系统的构建方式。

今天,我们准备一批数据,将它们传输到 GPU 内存,并通过一次绘图调用触发批量绘图。 OpenGL 通过顶点数组和顶点缓冲对象 (VBO) 来实现这一点。顶点数组自 OpenGL-1.1(1996)以来就已经存在,并且 VBO API 是建立在顶点数组之上的,因此对于任何合理的程序,都可以轻松添加 VBO 支持。

Or do I have to write them manually? Is there a tutorial online that uses OpenGL 3+?

这取决于相关功能。例如,整个纹理环境、组合器已被删除。就像矩阵操作功能和整个照明界面一样。

他们所做的和配置的现在是通过着色器和制服完成的。有人可能会说,既然您需要提供着色器,那么您就应该自己实现这一点。您很快就会发现,通常编写着色器比摆弄大量 OpenGL 参数设置调用更容易、更简洁。此外,一旦您取得了足够的进展,您就几乎不会错过矩阵操作函数。每个处理 3D 图形的严肃应用程序都会维护变换矩阵本身;无论是为了增强灵 active 还是仅仅因为其他地方也需要这些矩阵,例如一些物理模拟。

As for " gluPerspective" I have read that it isn't used in Opengl 3+. Isn't it supposed to be a separate function in GLUT? what does it has to do with OpenGL 3+? Last, what does Transform( Width, Height ); do? (I found it in some sample code I downloaded, and I can't find it in GLUT or OpenGL).

gluPerspective 是 GLU 的一部分。 GLU 是 OpenGL 实用函数的配套库,过去随 OpenGL-1.1 一起提供。然而它不是 OpenGL 规范的一部分并且完全可选。

过剩又是另一回事了。它是一个简单的框架,用于快速设置 OpenGL 窗口和上下文,并提供一些简约的输入 API。它也不再被积极维护。我个人建议不要使用它。如果必须使用 GLUT API,请使用 FreeGLUT。或者更好的是,根本不要过多,使用 Qt、GTK 等工具包或 GLFW 或 SDL 等框架。

关于OpenGL 已弃用的函数以及 gluPerspective 和 Transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7960398/

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