问题标签 [opengl-es-1.1]

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 回答
127 浏览

ios - GameKit 是否支持像在 OpenGL ES 1.x 中那样绘制带顶点的简单三角形?

我对 OpenGL ES 和 GameKit 有点困惑。

到目前为止,我一直使用 OpenGL ES 1.x,我认为它被称为“固定功能管道”。GameKit 与 OpenGL ES 2.x 一起工作,这似乎要复杂得多,而且似乎缺少所有方便的绘图功能。

在 OpenGL ES 1.x 中,我使用交错的顶点数组绘制一个三角形或三角形条带,如下所示:

如果这是“固定功能管道”并且 OpenGL ES 2.0 没有它,那么您将如何在 OpenGL ES 2.0 或 GameKit 中绘制一个简单的三角形呢?每个三角形或三角形条带都是“着色器”吗?

0 投票
1 回答
896 浏览

ios - 为什么这个最小的代码无法使用 OpenGL ES 1.1 绘制带纹理的三角形?

我正在尝试将 512 * 512 纹理渲染到由两个三角形组成的 256 * 256 正方形上。

目标是学习如何在 OpenGL ES 1.1 中以最少的代码量绘制两个三角形的纹理矩形。

EXC_BAD_ACCESS:问题解决了!Sam 获得了 +500 赏金 :-) 在调用 glDrawArrays 时,我得到了一个 EXC_BAD_ACCESS。该项目使用使用 Xcode 5.0.2 创建的 ARC,我尝试在 iPhone 5 模拟器和 iPhone 5S 上运行它,结果相同。Sam 指出,与其启用颜色数组glEnableClientState(GL_COLOR_ARRAY);,不如启用纹理坐标数组glEnableClientState(GL_TEXTURE_COORD_ARRAY);

如果其他人碰巧来到这里学习如何在 OpenGL ES 1.1 中对多边形进行纹理处理,我将第二个问题放在这里以保持完整性。

这就是我设置 CAEAGLLayer 的方式:

在 CAEAGLLayer 支持的 UIView 创建和配置如上所示后,我得到了 UIImage 的像素数据。我在单步执行时在打印输出中添加了注释:

一切看起来都很好。UIImage 被正确加载。然后我用它pixelData来创建纹理:

最后,CADisplayLink 被创建并调用一个-draw在 GCD 后台队列中执行场景绘制操作的方法。这就是我尝试在 GCD 块内的渲染回调中在屏幕上绘制它的方式:

当它到达 glDrawArrays 时,我最终得到一个 EXC_BAD_ACCESS。

任何线索为什么会发生这种情况?我仔细检查了:

用于生成 pixelData 的 UIImage 不会被释放。CAEAGLLayer 支持的 UIView 也不会被释放。当我删除 GCD 并在主线程上渲染时,也会出现此问题。

  • UIImage 被正确加载。它是 512 x 512 大。
  • 该图像是带有 alpha 的 PNG 24。
  • textureID 设置为 1。当我单步执行时,它无处停止,所有值都有意义。直到我到达 glDrawArrays。
0 投票
1 回答
999 浏览

android - 如何在 OpenGL ES 1 中混合两个纹理

因为 ETC 纹理不支持 alpha 通道,所以我尝试混合两个 ETC 纹理。你们中的任何人都知道如何将其翻译成 open gl es 1.x

这是 opengles 2.0 中的片段着色器。由于 Open GL ES 1.x 不支持着色器。我真的需要你的支持。

0 投票
1 回答
632 浏览

ios - 在 OpenGL ES 1.1 中绘制二维三角形时如何定义顺序?

我正在绘制每个顶点只有 x 和 y 坐标的三角形:

有时当我在另一个三角形上绘制一个三角形时,它们似乎是共面的,并且表面会抖动,因为它们在空间中共享完全相同的表面。

有没有办法说“OpenGL,我希望你在它下面的任何东西上绘制这个三角形”而不使用 3D 坐标,还是我必须启用深度测试并使用 3D 坐标来控制 Z 索引?

0 投票
1 回答
2462 浏览

opengl-es - 为什么我应该逆时针而不是顺时针创建顶点?

我发现 OpenGL ES 1.1 可以双向工作。这是四边形的示例:

其他方向:

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

有人说你应该按逆时针顺序创建顶点。为什么?

0 投票
1 回答
653 浏览

ios - 在 iOS 上使用哪种 OpenGL ES 1.1 alpha 混合配置?

如果您想实现类似于 UIKit 的具有透明度(如 PNG)的纹理混合,您如何正确配置 OpenGL ES 1.1?

我发现:

但也有:

0 投票
1 回答
380 浏览

ios - 如何在 OpenGL ES 1.1 中围绕 x 和 y 旋转?

我正在 OpenGL ES 1.1 中绘制具有 4 个顶点的纹理。

它可以围绕 z 旋转:

但是当我尝试像 CALayer 一样围绕 x 或 y 旋转它时,纹理就会完全消失。绕 x 旋转的示例:

我还尝试了非常小的值并在动画循环中增加它们。

在某些角度,我只看到纹理的边缘。就好像 OpenGL ES 会剪掉任何深入的东西。

问题可能与投影模式有关吗?您将如何像使用 CALayer 变换属性一样实现纹理的透视变换?

0 投票
0 回答
392 浏览

android - Galaxy Nexus 上的白色 OpenGL ES 1 罐纹理

看来我的 2 次幂纹理完全显示为白色。此应用程序适用于各种设备,甚至 Nexus 7,但 Galaxy Nexus 手机似乎会产生白色纹理。这可能与 PowerVR gpu 有关。

我可以与应用程序交互,一切似乎都在原地,但纹理没有渲染。

我尝试了各种EGLConfigs,似乎没有任何效果。

这是我生成纹理的方式,注意没有 mipmap:

此外,GL_TEXTURE_2D已启用。

  • 纹理都是 2 的幂(64x512,1024x1024 等)。
  • 即使设备支持 2048x2048,纹理也没有超过 1024x1024
  • 没有glError()s 也没有eglError()s。
  • 颜色有效,我可以与我的应用程序交互
  • eglMakeCurrent或没有错误eglCreateContext
  • 适用于我尝试过的所有其他设备(模拟器、Nexus 7(Tegra)、Sony Xperia 10(Adreno 200)、Galaxy S2(Mali GPU))
  • 我使用交错的 VBO 进行绘图
  • glEnable(GL_TEXTURE_2D);已设置
  • 资产放在 assets 文件夹中
  • 所有 OpenGL 操作都发生在相同的上下文和线程上

更新:glGenTextures()返回大量数字。

滚动自定义纹理迭代器,我能够让它工作。我仍然想弄清楚为什么 glGenTextures 不起作用。这是代码:

TextureId可以是数十亿。这只发生在 Nexus Phone 上,所有其他设备都给了我正确的纹理 ID(1、2、3、4 等)

有什么建议么?

0 投票
0 回答
57 浏览

android - 如何在opengl es中将2个纹理混合成第三种特定颜色

我正在尝试为 android 的一个小程序做一些设计。我为此使用 OpenGL ES1。我正在屏幕上绘制 2 个四边形。当四边形相交时,必须显示第三种颜色。

像这样:

http://www.marlonbodhi.com/mix.jpg

所以我试图在它们相交时将这两种纹理混合成第三种颜色。有什么地方可以设置 Opengl 来做到这一点吗?

0 投票
0 回答
146 浏览

android - 在创建 opengles1.1 纹理视图时耗尽 vram

我使用链接中的以下代码来创建opengles1.1texture-view 。

我的应用程序有一个视图,如果用户单击按钮,则会创建几个带有 3D 模型名称的按钮,从而创建一个新的纹理视图。

如果单击返回,用户将返回,纹理视图将被删除。

现在的问题是在这样做 5 到 6 次后,应用程序崩溃并出现以下错误:

谁能帮我解决这个问题我做错了什么?