问题标签 [opengl]

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 投票
8 回答
8328 浏览

opengl - 对于非游戏来说,OpenGL 仍然比 Direct3D 更好吗?

标准模型是 OpenGL 用于专业应用程序 (CAD),而 Direct3D 用于游戏。

随着 openGL 3.0 的崩溃,openGl 仍然是技术 3D 应用程序 (cad/GIS) 的自然选择吗?
是否有 Direct3D 的场景库?

(当然 Direct3D 只是 windows。)

0 投票
3 回答
2781 浏览

windows - 如何编写检查 OpenGL 支持的安装程序?

我们有一个使用 OpenGL 的 3D 查看器,但我们的客户有时会抱怨它“不工作”。我们怀疑这些问题大多源于他们试图在商务笔记本电脑上使用现代 3D 实时游戏。

我们如何在我们使用的 windows msi 安装程序中检查对 openGL 的支持?

附带说明一下,如果您能回答“支持 OpenGL 的显卡列表?”,那也太好了。奇怪的是谷歌在这里没有帮助..

0 投票
10 回答
144678 浏览

opengl - 如何在 OpenGL 中将基元渲染为线框?

如何在 OpenGL 中将基元渲染为线框?

0 投票
2 回答
7669 浏览

opengl - 在 OpenGL 中调整整个场景的亮度/伽玛

有谁知道我如何在OpenGL中实现以下效果:

  • 更改渲染场景的亮度
  • 或者在 OpenGL 中实现 Gamma 设置

我尝试通过更改灯光的环境参数和灯光类型(定向和全向),但结果并不统一。TIA。

感谢您的帮助,一些附加信息: * 我不能使用任何 Windows 特定 API。* 伽玛设置不应影响整个窗口,因为我必须为不同的视图设置不同的伽玛。

0 投票
2 回答
4245 浏览

opengl - OpenGL:如何在不更改目标 alpha 的情况下进行 RGBA->RGBA 位图

我有一个 OpenGL RGBA 纹理,我使用帧缓冲区对象将另一个 RGBA 纹理粘贴到它上面。问题是,如果我使用通常的混合函数和 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA), 生成的 blit 会导致目标纹理 alpha 发生变化,使其对于之前 alpha 为 1 的地方稍微透明。我希望目标表面 alpha 永远不会改变,否则效果RGB 值应该与GL_SRC_ALPHA和完全一样GL_ONE_MINUS_SRC_ALPHA。所以混合因子函数应该是 (As,As,As,0) 和 (1-As,1-As,1-As,1)。我怎样才能做到这一点?

0 投票
3 回答
11532 浏览

opengl - where can i download opengl for windows vista

I've been searching and can't find the download files on opengl.org. can someone please point me to the right direction?

0 投票
4 回答
10436 浏览

c++ - 在 Windows 中从 OpenGL 窗口中捕获视频

我应该为我的用户提供一种非常简单的方法来从我的 OpenGL 应用程序的主窗口中捕获视频剪辑。我正在考虑添加按钮和/或键盘快捷键来开始和停止捕获;开始时,我可以要求提供文件名和其他选项(如果有)。它必须在 Windows (XP/Vista) 中运行,但我也不想关闭我迄今为止能够保持打开的 Linux 门。

该应用程序使用 OpenGL 片段和着色器程序,这些效果是我在最终视频中绝对需要的。

在我看来,甚至可能有几种不同的方法可以满足我的要求(但我真的不知道应该从哪里开始):

  • 具有 startRecording(filename)、stopRecording 和 captureFrame 等函数的编码库。我可以在渲染每一帧(或每第二/第三/任何)之后调用 captureFrame() 。如果这样做会使我的程序运行得更慢,那这不是问题。

  • 可以从我的应用程序以编程方式控制的独立外部程序。毕竟,一个无法控制的独立程序几乎可以满足我的需求......但正如所说,用户操作应该非常简单,我也希望无缝; 我的应用程序通常全屏运行。此外,它应该可以作为我目前使用 NSIS 准备的应用程序安装包的一部分进行分发。

  • 使用 Windows API 逐帧捕获屏幕截图,然后使用(例如)此处提到的库之一。似乎很容易找到如何在 Windows 中捕获屏幕截图的示例;但是,我希望有一个解决方案,它不会真正强迫我在 WinAPI 级别上弄得超级脏。

  • 使用 OpenGL 渲染到屏幕外目标,然后使用库来生成视频。我不知道这是否可能,而且恐怕无论如何这可能不是最痛苦的道路。特别是,我不希望实际渲染根据是否捕获视频而采用不同的执行路径。此外,我会避免在正常、非捕获模式下可能降低帧速率的任何事情。

如果解决方案在任何一个意义上都是免费的,那将是很好的,但这并不是一个绝对的要求。一般来说,膨胀越少越好。另一方面,由于这个问题之外的原因,不幸的是,我无法链接任何仅 GPL 的代码。

关于文件格式,我不能指望我的用户开始搜索任何编解码器,但只要显示视频对于基本级别的 Windows 用户来说足够容易,我并不关心格式是什么。但是,如果可以控制输出的压缩质量,那就太好了。

澄清一下:我不需要从摄像机等外部设备捕获视频,我也对鼠标移动不感兴趣,即使获取它们也不会造成伤害。对音频没有要求;该应用程序不会发出任何噪音。

我使用 Visual Studio 2008 编写 C++,因为这个应用程序也利用了 GLUT 和 GLUI。我对 C++ 和库中的链接之类的东西有扎实的了解,但另一方面,OpenGL 对我来说还是很新的:到目前为止,我真的只学到了实际完成工作所需的一些知识。

我不需要非常紧急的解决方案,所以请慢慢来:)

0 投票
3 回答
733 浏览

opengl - Win32 的 CoreImage

对于那些不熟悉 Core Image 的人,这里有一个很好的描述:http: //developer.apple.com/macosx/coreimage.html

有没有相当于 Apple 的 CoreImage/CoreVideo for Windows 的东西?我环顾四周,发现了 DirectX/Direct3D 的东西,它包含所有底层部分,但似乎没有任何高级 API 可以使用,除非你愿意使用 .NET使用 WPF,这两者都不是我真的很感兴趣。

基本思想是创建/加载图像,附加任意数量的可以链接在一起的过滤器,形成图形,然后将图像渲染到 HDC,使用 GPU 完成大部分艰苦的工作。DirectX/Direct3D 有这些部分,但是您必须跳过很多圈(或者看起来如此)才能使用它。

0 投票
3 回答
1563 浏览

opengl - 渲染手绘人物的最佳方式

我想我会用一个例子来说明:在这个游戏中,您可以使用鼠标绘制 2D 形状,并且您所绘制的内容会实时呈现到屏幕上。我想知道使用硬件加速 (OpenGL) 渲染此类绘图的最佳方法是什么。我有两个想法:

  • 开始绘制时创建屏幕大小的纹理,绘制时更新此纹理,并将其粘贴到屏幕上
  • 创建一系列线段来表示图形,并使用线或细多边形来渲染它们

还有其他想法吗?这些方法中的哪一种可能是最好/最有效/最简单的?欢迎任何建议。

0 投票
2 回答
2881 浏览

iphone - 在 2D 场景中创建“放大镜”的最佳方式是什么?

我正在开发一款游戏,我需要让玩家通过镜头(例如,放大镜)观察飞机(例如,墙壁)。游戏是在 iPhone 上运行的,所以我的选择是 Core Animation 或 OpenGL ES。

我的第一个想法(我还没有尝试过)是使用 Core Animation 来做到这一点。

  1. 使用 CALayers 在其上创建墙和对象。
  2. 使用 CALayer 的renderInContext:方法创建墙壁的图像作为背景层。
  3. 将图像裁剪为镜头形状,按比例放大,然后将其绘制在背景上。
  4. 在上面画上镜框和“闪亮玻璃”层。

笔记:

  • 我比 OpenGL 更熟悉 Core Animation,所以也许有更好的方法来使用 OpenGL 来做到这一点。(请告诉我!)
  • 如果我使用未附加到视图的 CALayers,我是否必须自己管理所有动画?还是有一种简单的方法可以手动运行它们?
  • 3D视角不重要;我只是放大一面平坦的墙壁。
  • 我担心执行上述所有操作对于流畅的动画来说太慢了。

在我提交大量代码来编写此代码之前,我的问题是您是否看到上述计划中的任何陷阱,或者您能否推荐一种更简单的方法来做到这一点?