问题标签 [opengl-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4670 浏览

opengl - OpenGL:弃用是怎么回事?

OpenGL 3.0 和 3.1 已经弃用了很多我认为必不可少的功能。特别是在着色器中使用固定函数。

谁能解释这到底是怎么回事?

为什么他们发现有必要弃用如此有用的功能,显然每个人都在使用它并且没有理智的硬件公司会取消对它的支持?

0 投票
3 回答
1415 浏览

python - OpenGL 新手和弃用

我已经开始使用 PyOpenGL 3.0.1b 在 Python 中使用 OpenGL。

我查看了一些示例代码并开始运行它并对其进行修改等。一切都很好,直到我变得不那么无知了。

http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml列出了 OpenGL 函数以及它们是否被弃用。所以我心想,我只需要找到一些不使用所有这些已弃用的废话的最新教程。

几个小时后,没有这样的运气!弃用示例代码后弃用的示例代码......我可以在某个地方获取非弃用教程吗?

0 投票
5 回答
28220 浏览

c++ - gluPerspective 在 OpenGL 3.1 中被删除,有什么替代品吗?

我正在尝试在网上阅读一些 OpenGL 教程。问题是我发现了一些旧的使用gluPerspective(). gluPerspective 在 OpenGL 3.0 中被弃用并在 3.1 中被移除。

我可以改用什么功能?

我正在使用安装了最新 FreeGlut 的 C++。

0 投票
5 回答
13255 浏览

opengl - 哪些 OpenGL 函数不是 GPU 加速的?

当我读到这个(来自OpenGL wiki)时,我很震惊:

glTranslate、glRotate、glScale

这些硬件加速了吗?

不,没有已知的 GPU 可以执行此操作。驱动程序在 CPU 上计算矩阵并将其上传到 GPU。

所有其他矩阵运算也在 CPU 上完成:glPushMatrix、glPopMatrix、glLoadIdentity、glFrustum、glOrtho。

这就是为什么这些函数在 GL 3.0 中被认为已弃用的原因。您应该拥有自己的数学库,构建自己的矩阵,将矩阵上传到着色器。

很长一段时间以来,认为大多数 OpenGL 函数都使用 GPU 进行计算。我不确定这是否是一个普遍的误解,但经过一段时间的思考,这是有道理的。由于状态切换太多,旧的 OpenGL 函数(2.x 和更早版本)确实不适合实际应用程序。

这让我意识到,可能许多 OpenGL 函数根本不使用 GPU。

所以,问题是:

哪些 OpenGL 函数调用不使用 GPU?

我相信知道上述问题的答案将帮助我成为一个更好的 OpenGL 程序员。请分享您的一些见解。

编辑:

我知道这个问题很容易导致优化级别。这很好,但这不是这个问题的意图。

如果有人知道不使用 GPU 的某个流行实现(如 AshleysBrain 建议的、nVidia/ATI 和可能依赖于操作系统的)上的一组 GL 函数,那就是我所追求的!

合理的优化指南稍后会出现。让我们关注这个主题的功能。

编辑2:

本主题不是关于矩阵转换如何工作的。还有其他 主题

0 投票
1 回答
691 浏览

c++ - 将项目移植到 OpenGL3

我正在开发一个 C++ 跨平台 OpenGL 应用程序(Windows、Linux 和 MacOS),我想知道你们中的一些人是否可以分享一些关于将大型应用程序移植到 OpenGL 3 的建议。我正在研究 OpenGL 3 的原因是因为我认为我们可以从使用新的“同步对象”中受益匪浅。自 Geforce 256 天 (gl_nv_fences) 以来,Nvidia 一直支持这样的扩展,但在 OpenGL 3.0+ 之前,ATI 硬件上似乎没有等效功能......

我们的代码大量使用了 glut/freeglut、glu 函数、OpenGL 2 扩展和 CUDA(在支持的硬件上)。我现在面临的问题是“gl3.h”和“gl.h”相互不兼容(如gl3.h中所述)。你们知道是否有 GL3 glut 等价物吗?此外,查看 CUDA-toolkit 头文件,似乎 GL-CUDA 互操作性仅在使用旧版本的 OpenGL 时可用...(cuda_gl_interop.h 包括 gl.h...)。我错过了什么吗?

非常感谢你的帮助。

0 投票
5 回答
2396 浏览

opengl - 有多少用户可以运行使用 OpenGL 3.x 的软件?

我可以期望用户能够运行使用 OpenGL 3.x 的软件吗?

拥有开源图形驱动程序的 Linux 用户可以运行 OpenGL 3.x 吗?我知道 Mesa3D 7.8 只支持 OpenGL 2.1。

我也知道 OS X Snow Leopard 支持一些但不是所有的 OpenGL 3.0 功能。我不知道豹的情况。

我不知道 XP、Vista 和 Windows 7 上的情况。

我想开始学习OpenGL,我的兴趣更多在于科学和工程应用而不是游戏。我知道我将阅读使用 OpenGL 1.x 的代码,但我想使用我期望用户系统支持的最新规范编写代码。我想知道我应该开始学习 2.1 还是 3.3。我正在考虑获得 OpenGL Superbible 的第 4 版来学习 2.1 或 7 月 30 日发布的第 5 版来学习 3.3。(我有物理学学士学位,所以我的数学背景还不错。)


编辑:我发现这个相关问题的答案与我的问题相关。

0 投票
11 回答
18049 浏览

opengl - OpenGL 4.x 学习资源

我知道有一些关于学习 OpenGL 的问题。这是我所知道的:

  • 3D数学
  • 3D理论

这是我想知道的: - OpenGL 4.0核心配置文件(或更高版本) - 着色器语言 400(或后者) - 上面的每个部分(如果它不适用于供应商,那么它仍然不会打扰我)

这是我不想知道的 - 固定功能管道(永远不会使用它!) - 较旧的 OpenGL - 兼容性配置文件

我更喜欢更多的信息,比如教程、系列文章、书籍。

PS 如果您知道有关 opengl 3.x 核心配置文件的资源,请也发布它们

0 投票
2 回答
1354 浏览

opengl - 谁能破译为什么这个 OpenGL Hello World 会画一个黑色的窗口?

请原谅长度(和宽度;这是为了在 IDE 上清晰起见),但我想显示代码的完整长度,因为目的是现代 VBO 和 GLSL 中的简单 Hello World。

它最初基于http://people.freedesktop.org/~idr/OpenGL_tutorials/02-GLSL-hello-world.pdf

要点是没有打印单一的错误消息或警告 - 您可以看到 printfs 很多(实际上,几乎所有代码都试图被捕获错误)。

编译是在 -std=c99 -pedantic -O0 -g -Wall (没有警告)上完成的,因此编译器错误也没有太多空间。

我已经将注意力集中在

(后者是我还没有完全理解的代码的唯一部分;最晦涩的 func 'ever')

如果故意使着色器无效,信息日志不会打印任何内容,并且会正常打印健康的文本。因此,它既不是着色器字符串分配也不是它们的编译。

你能看到一些可以让它打印一个空白屏幕的东西吗?

如果 glDrawArrays 与 GL_POINTS 一起使用,它会在中间打印一个点,如果 glClear 前面有适当的 glClearColor,它会改变颜色。

0 投票
3 回答
3426 浏览

opengl - 在 OpenGL 中,仅使用 OpenGL3+ 方法创建透视图的最简单方法是什么?

起初这听起来可能很懒惰,但我已经研究了 2 天。

我有一个绘制原语的 SDL+GLEW 应用程序。我想从不同的角度制作一些视口。我看到了四个视口,但我无法更改视角。

假设你有

什么是最简单的方法——在 OpenGL3+ 规范中——创建一个透视视口(或者理想情况下是几个)?

0 投票
1 回答
136 浏览

opengl - OpenGL:寻找资源以了解顶点变换序列的使用

我正在研究仅使用 v.3.0 以后的方法来学习 OpenGL 的基础知识。我已经到了需要使用相当于“相机”的地步[基本目标是第一人称“用鼠标环顾四周”]。我确实问了一个关于它的具体问题,但它可能更深入我应该学习的内容(因为我不能轻易实现它)。我已经找到了一些关于这个问题的资源,它们可能并不理想,或者它们可能适用于 OpenGL 1.x。方法

我正在寻找的是:

  1. OpenGL中的矩阵清楚地代表什么?它们在不同的语境中代表什么?(关于屏幕上的投影和最终投影)

  2. 他们怎么能被操纵?应该操纵什么矩阵来做什么?什么时候应该被操纵?【编码方法】

  3. 关于数据通信的清晰提示。如何传递与投影路径相关的数据?

这似乎是一个互联网资源极其有限的领域,因为大多数引擎显然要么已经基于已经这样做的旧引擎(转换/只是用鼠标环顾四周),要么使用它们的人已经是相关领域的专家并公开他们的知识很少。