问题标签 [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.
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 中绘制一个简单的三角形呢?每个三角形或三角形条带都是“着色器”吗?
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。
android - 如何在 OpenGL ES 1 中混合两个纹理
因为 ETC 纹理不支持 alpha 通道,所以我尝试混合两个 ETC 纹理。你们中的任何人都知道如何将其翻译成 open gl es 1.x
这是 opengles 2.0 中的片段着色器。由于 Open GL ES 1.x 不支持着色器。我真的需要你的支持。
ios - 在 OpenGL ES 1.1 中绘制二维三角形时如何定义顺序?
我正在绘制每个顶点只有 x 和 y 坐标的三角形:
有时当我在另一个三角形上绘制一个三角形时,它们似乎是共面的,并且表面会抖动,因为它们在空间中共享完全相同的表面。
有没有办法说“OpenGL,我希望你在它下面的任何东西上绘制这个三角形”而不使用 3D 坐标,还是我必须启用深度测试并使用 3D 坐标来控制 Z 索引?
opengl-es - 为什么我应该逆时针而不是顺时针创建顶点?
我发现 OpenGL ES 1.1 可以双向工作。这是四边形的示例:
其他方向:
用glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
有人说你应该按逆时针顺序创建顶点。为什么?
ios - 在 iOS 上使用哪种 OpenGL ES 1.1 alpha 混合配置?
如果您想实现类似于 UIKit 的具有透明度(如 PNG)的纹理混合,您如何正确配置 OpenGL ES 1.1?
我发现:
但也有:
ios - 如何在 OpenGL ES 1.1 中围绕 x 和 y 旋转?
我正在 OpenGL ES 1.1 中绘制具有 4 个顶点的纹理。
它可以围绕 z 旋转:
但是当我尝试像 CALayer 一样围绕 x 或 y 旋转它时,纹理就会完全消失。绕 x 旋转的示例:
我还尝试了非常小的值并在动画循环中增加它们。
在某些角度,我只看到纹理的边缘。就好像 OpenGL ES 会剪掉任何深入的东西。
问题可能与投影模式有关吗?您将如何像使用 CALayer 变换属性一样实现纹理的透视变换?
android - Galaxy Nexus 上的白色 OpenGL ES 1 罐纹理
看来我的 2 次幂纹理完全显示为白色。此应用程序适用于各种设备,甚至 Nexus 7,但 Galaxy Nexus 手机似乎会产生白色纹理。这可能与 PowerVR gpu 有关。
我可以与应用程序交互,一切似乎都在原地,但纹理没有渲染。
我尝试了各种EGLConfig
s,似乎没有任何效果。
这是我生成纹理的方式,注意没有 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 等)
有什么建议么?
android - 如何在opengl es中将2个纹理混合成第三种特定颜色
我正在尝试为 android 的一个小程序做一些设计。我为此使用 OpenGL ES1。我正在屏幕上绘制 2 个四边形。当四边形相交时,必须显示第三种颜色。
像这样:
http://www.marlonbodhi.com/mix.jpg
所以我试图在它们相交时将这两种纹理混合成第三种颜色。有什么地方可以设置 Opengl 来做到这一点吗?
android - 在创建 opengles1.1 纹理视图时耗尽 vram
我使用链接中的以下代码来创建opengles1.1
texture-view 。
我的应用程序有一个视图,如果用户单击按钮,则会创建几个带有 3D 模型名称的按钮,从而创建一个新的纹理视图。
如果单击返回,用户将返回,纹理视图将被删除。
现在的问题是在这样做 5 到 6 次后,应用程序崩溃并出现以下错误:
谁能帮我解决这个问题我做错了什么?