问题标签 [opengl-es-2.0]

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 投票
1 回答
435 浏览

opengl-es - 将我的几何图形发送到 glsl 的最有效方法是什么?

在我的场景中,我有一棵网格树。每个网格包含一个变换矩阵、一个顶点列表、法线、uvs 和一个子网格列表。

我想使用 VBO 将“结构数组”中的几何图形发送到 glsl,但我不知道在父网格矩阵变换的情况下如何处理更新每个网格的矩阵。我应该遍历网格树并为每帧的每个顶点添加一个矩阵吗?我应该对每帧的顶点进行预乘吗?我应该保持一个统一的矩阵列表并按索引引用当前顶点的矩阵吗?我应该为每个网格使用一个 glDrawArrays 还是 glDrawElements?

0 投票
1 回答
2372 浏览

textures - 如何在 OpenGL ES 2.0 中使用 png 图像纹理立方体?

如何在 OpenGL ES 2.0 中使用 png 图像对立方体进行纹理处理?以及如何使用图集进行纹理处理?

0 投票
0 回答
1517 浏览

performance - 我的 iOS OpenGL ES 2.0 应用程序的性能限制是多少?

我目前正在学习Objective-C。作为我的第一个项目,我选择只使用 OpenGL Es 2.0 为 iOS 编写一个小型 3D 应用程序。所以,是的,我同时也在学习这一点。我之前只知道老式 OpenGL(没有着色器)的基础知识,但我可以(并且确实实现了)一些基本的矩阵和向量数学。

我正在取得一些进展,但性能不再那么好。我开始在 Instruments 中进行分析(Xcode 3.2;我确实可以通过 iOS 开发程序访问 Xcode 4,但由于一些奇怪的行为而没有使用它),但我无法完全理解数据:

该应用程序(在 iPhone 3GS、iOS 4.2 上运行)运行速度约为 15 fps,但设备利用率仅为40% 左右渲染器利用率约为35%,而Tiler 利用率低于10%。这意味着什么?我是坐公交车吗?我认为在看到 fps 下降之前,我需要在这三个统计数据中的至少一个中达到接近 100% 的利用率(是的,应用程序可以在非常简单的场景中达到 60)。

目前,该应用程序所做的只是渲染一个场景图,其中包含 500 个具有法线的无纹理立方体,并以 1 到 6 个为一组。

0 投票
1 回答
2702 浏览

performance - 通过最小化着色器/状态更改来优化 WebGL 性能的指南

我试图了解 WebGL 用于渲染由 100K 三角形组成的大型室内场景的实用性。这些三角形分布在很多物体上,场景中有很多材质。另一方面,没有移动部件。而且材料往往相当简单,主要基于纹理贴图。有很多纹理贴图共享..例如场景中的所有椅子都将共享一个公共贴图。还有一些多重纹理 - 最多三个纹理覆盖在材料中。

我一直在做一些实验和阅读,并收集到在渲染过程中频繁切换材质会减慢速度。例如,一个具有 200K 三角形的场景会有显着的性能差异,这取决于是有 10 个对象还是 1000 个对象,假设每次显示一个对象时都会设置一个新材质。

因此,如果性能很重要,则似乎应该按材质对场景进行排序,以最大程度地减少材质切换。我正在寻找的是关于如何考虑各种状态变化的开销的指南,以及我在哪里可以获得最大的收益。例如,

  • gl.useProgram()例如, , gl.uniformMatrix4fv(),的相对性能成本是多少gl.drawElements()
  • 我应该尝试编写 ubershader 来最小化着色器切换吗?
  • 我应该尝试聚合几何以最小化gl.drawElements()调用次数吗

我意识到里程可能会因浏览器、操作系统和图形硬件而异。而且我也不是在寻找英勇的措施。只是一些已经有一些快速制作场景经验的人的一些指导。我要补充一点,虽然我过去在固定流水线 OpenGL 编程方面有一些经验,但我对 WebGL/OpenGL ES 2.0 的处理方式还是比较陌生。

0 投票
4 回答
11237 浏览

ios - OpenGL ES 2.0 (iOS) 中的 2D 绘图

我正在学习如何在 iOS 上使用 OpenGL ES 2.0。现在我只想做一些基本的 2D 动画(例如在屏幕上移动一个矩形并改变它的大小)。我从 Apple 在 Xcode 中提供的 OpenGL ES 项目模板开始。我的绘图代码如下所示:

现在这将在屏幕中间绘制一个漂亮的矩形。但是,如果我开始通过添加以下代码来更改矩形,它开始看起来很时髦

就好像矩形的一部分附加到屏幕的中心。我对 OpenGL ES 完全陌生,所以我确信我的问题很明显。我还假设这与 OpenGL ES 作为 3D 图形库有关,我试图将其视为 2D 空间。所以我的问题是:在 OpenGL ES 2.0 中绘制和动画 2D 对象的最佳方法是什么?我在网上看到了一些关于 OpenGL ES 1.1 的东西,但这对我没有多大帮助。他们是在 OpenGL ES 2.0 中进行 2D 绘图的特殊技术,还是有某种 2D 绘图模式?

任何指导将不胜感激。

0 投票
1 回答
1753 浏览

iphone - 支持 OpenGL ES2.0 的最低 iOS 版本是多少?

我不确定这个问题是否有意义。我正在编写一个使用 Opengl ES 2.0 的 iPhone 游戏。我知道 3gs 及更高版本支持 OpenGL ES 2.0。iOS 版本是否也有最低要求,例如设备需要 iOS 3.1.3 或更高版本?还是仅取决于硬件?

谢谢!-shireesh

ps 我尝试在网上搜索但没有找到太多,也许我没有使用正确的关键字

0 投票
2 回答
2187 浏览

iphone - 在 iPhone 上进行 GPU 加速计算 (GPGPU) 的资源?

我有兴趣在 iOS 中进行 GPU 加速计算(适用于 iPhone 3GS 和 4)。不幸的是,这两种设备都不支持 OpenCL,因此似乎唯一的选择是将程序数据表示为图形数据并使用 OpenGL ES 2.0 可编程着色器(顶点和片段)来完成这项工作。任何人都可以推荐任何可能有用的资源吗?示例代码是圣杯。

0 投票
2 回答
4691 浏览

android - 使用 OpenGL ES 2.0 将文本显示为纹理

我正在开发一个 Android 2.2 应用程序。我使用 C++ 来管理所有 OpenGL ES 2.0 的东西。

我想用 OpenGL 显示一个文本,但我不知道如何(我对它非常非常陌生)。

我读到我可以将常见的字符串渲染到纹理,然后简单地绘制这些纹理。但我该怎么做呢?

谢谢你。

0 投票
3 回答
27599 浏览

opengl-es - OpenGL着色器的显式与自动属性位置绑定

在为 OpenGL 着色器程序设置属性位置时,您面临两个选择:

glBindAttribLocation()在链接之前明确定义一个属性位置。

或者

glGetAttribLocation()链接后获取一个自动分配的属性位置。

使用其中一个的实用程序是什么?

如果有的话,哪一个在实践中更受欢迎?

0 投票
1 回答
758 浏览

android - 从顶点和片段着色器中删除法线

我正在使用 C++ 中的 OpenGL ES 2.0 开发一个 Android 2.2 应用程序。

这是我的顶点和片段着色器:

我对 OpenGL ES 2.0 开发非常陌生。

有人告诉我,如果我想在我的渲染上使用灯光,我必须对顶点和片段着色器进行一些复杂的修改。所以,我不知道怎么做,法线不是必需的。

我的问题是:

如何修改不使用法线的顶点和片段着色器?

谢谢