问题标签 [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 回答
453 浏览

ios - 使用 CADisplayLink 的 iOS OpenGL ES 1.1 生涩动画(重启修复了一段时间)

我正在使用 OpenGL ES 1.1 和 CADisplayLink 为 3d 场景设置动画。如果 iOS 设备最近重新启动,动画是平滑的,并且两次 displayLink.timestamp 调用之间的时间增量相当均匀。但是在使用 iOS 设备几个小时或几天后,我的应用程序有时会运行几次,动画会变得不稳定,时间增量会上升,然后重置为较低的值,然后再次上升。

像这样:

2012-09-01 23:42:58.770 [2678:707] dt= 0.021139

2012-09-01 23:42:58.787 [2678:707] dt= 0.022183

2012-09-01 23:42:58.804 [2678:707] dt= 0.023223

2012-09-01 23:42:58.820 [2678:707] dt= 0.024270

2012-09-01 23:42:58.837 [2678:707] dt= 0.009679

2012-09-01 23:42:58.853 [2678:707] dt= 0.010750

2012-09-01 23:42:58.870 [2678:707] dt= 0.011766

2012-09-01 23:42:58.887 [2678:707] dt= 0.012806

2012-09-01 23:42:58.903 [2678:707] dt= 0.013847

2012-09-01 23:42:58.920 [2678:707] dt= 0.014890

2012-09-01 23:42:58.937 [2678:707] dt= 0.015933

2012-09-01 23:42:58.953 [2678:707] dt= 0.016976

2012-09-01 23:42:58.970 [2678:707] dt= 0.018011

2012-09-01 23:42:58.987 [2678:707] dt= 0.019055

2012-09-01 23:42:59.003 [2678:707] dt= 0.020097

2012-09-01 23:42:59.020 [2678:707] dt= 0.021143

2012-09-01 23:42:59.037 [2678:707] dt= 0.022181

2012-09-01 23:42:59.054 [2678:707] dt= 0.023222

2012-09-01 23:42:59.071 [2678:707] dt= 0.024288

2012-09-01 23:42:59.087 [2678:707] dt= 0.009624

2012-09-01 23:42:59.103 [2678:707] dt= 0.010728

2012-09-01 23:42:59.121 [2678:707] dt= 0.011763

2012-09-01 23:42:59.137 [2678:707] dt= 0.012808

2012-09-01 23:42:59.153 [2678:707] dt= 0.013847

2012-09-01 23:42:59.170 [2678:707] dt= 0.014891

2012-09-01 23:42:59.187 [2678:707] dt= 0.016002

2012-09-01 23:42:59.203 [2678:707] dt= 0.016979

2012-09-01 23:42:59.220 [2678:707] dt= 0.018016

2012-09-01 23:42:59.237 [2678:707] dt= 0.019042

2012-09-01 23:42:59.253 [2678:707] dt= 0.020099

2012-09-01 23:42:59.270 [2678:707] dt= 0.021138

2012-09-01 23:42:59.287 [2678:707] dt= 0.022185

2012-09-01 23:42:59.304 [2678:707] dt= 0.023222

2012-09-01 23:42:59.320 [2678:707] dt= 0.024265

2012-09-01 23:42:59.337 [2678:707] dt= 0.009681

2012-09-01 23:42:59.354 [2678:707] dt= 0.010736

然后,如果重新启动 iOS 设备,动画又会变得流畅。

当 UpdateAnimation() 函数中几乎没有与游戏相关的计算时,这个问题甚至出现在我的菜单屏幕上。

我不明白发生了什么以及为什么重新启动总能在一段时间内解决这个问题。

0 投票
2 回答
3741 浏览

matrix - OpenGL ES2.0 Modelview 矩阵 2D

从 OpenGL ES1.1 迁移到 2.0 用于 2D 目的(正交),我在弄清楚如何应用转换(矩阵乘法顺序)时遇到了一些麻烦。我只需要在 Z 轴上旋转,并在 X 和 Y 上缩放,这始终是相同的值,所以这应该会大大简化事情。我当前的完美方法(ES1.1)有一个虚拟相机,与对象位于相同的绝对坐标空间中。

在每一帧的开始,我首先通过调用

对于对象,它看起来像这样(省略纹理和绘图调用)。

我试图在 ES2.0 中获得同样的功能,但是所有的矩阵运算都必须手动执行。

这个链接我发现乘法的正确顺序应该是((Scale * Rotation) * Translation)

之后我想出了一个结合所有这些的单一矩阵公式,因为 2D 更简单。我还包括了一个正交投影矩阵。对于测试着色器,我有这个:

对于每个自由度,它的工作原理都是如此。但是,我无法弄清楚如何合并相机。着色器中矩阵的乘法顺序与 gl 调用的顺序不匹配,因此我不确定如何将相机调用转换为乘法。起初我还试图为相机计算一个单独的变换矩阵,并像这样设置最终位置:

无论相机矩阵本身的顺序如何,我都认为这是不正确的(我尝试了多种方法,但都没有正确)。我相信所有相机和对象模型视图转换都必须编译成一个模型视图矩阵(每个矩阵乘以最后一个,从相机转换开始,然后是对象,但显然是按特定顺序)。这种操作顺序是我感到困惑的地方,尤其是因为它与 ES1.1 中的正常工作不匹配。

有人可以解释正确的顺序,以及为什么 gl 调用与实际乘法不同吗?

0 投票
0 回答
353 浏览

opengl-es - Opengl ES 1.1 - 我如何在运行时生成 alpha 蒙版并将其应用于纹理

我想生成一个 alpha 蒙版,它将是一个黑色正方形,中间有一个随机角度的白色弧线,然后将其应用于将在下一帧中渲染的纹理。我如何在 OpenGL 中做到这一点

编辑:

我想要做的是随着时间的推移掩盖我的一部分纹理。我有一个圆形进度条的纹理,我试图通过应用掩码来反映进度,该掩码应该在运行时通过在黑色正方形上绘制白色弧线来生成。这里的问题是我如何生成这个蒙版并在渲染阶段以不昂贵的方式将其进一步应用于我的纹理。(我已经尝试过使用画布(来自新位图)的方式以及使用画布进行进一步操作,但我真的不喜欢这种做法。)

0 投票
0 回答
384 浏览

android - glDrawTexiOES 绘图在显示旋转时被截断

我正在开发一个使用本机代码绘制单个 OpenGL 2D 纹理的 2D 游戏。然后将纹理原封不动地绘制在屏幕上。除非旋转显示器,否则代码工作正常。游戏继续正常运行,但纹理被截断并偏离屏幕中心。如果以任何方向开始游戏都可以正常运行,但如果方向改变,则会出现绘制问题。我正在正确处理方向更改,以便不会破坏 GL 上下文,并且可以正确计算每个方向的绘图参数。我唯一能想到的是,我在处理 onSurfaceChanged() 事件时可能遗漏了一些步骤。这是 onSurfaceChanged() 调用的本机代码:

显示纹理的代码:

0 投票
1 回答
1649 浏览

android - 三星 Galaxy 变体上的 Android opengl 白色纹理

我在三星银河变体上得到白色纹理,但在我测试过的其他手机上,纹理工作得很好。所以我的问题是导致这种行为的通常怀疑是什么?银河变体是否有任何特殊硬件并且缺少某些东西?

我的纹理加载代码是这个

并且绘图像往常一样使用 GL_TRIANGLES

*我面前没有实际的设备,所以我不能做 glGetError

0 投票
1 回答
475 浏览

opengl-es - 任何人都可以为 ARM 的 OpenGL ES 1.1 提供一个很好的教程/书籍/代码示例吗?

我搜索了一些 OpenGL ES 1.1 的教程,以便能够在 ARM 11 eva 板上编写一个小演示应用程序;我面临的问题是,我发现的所有内容都适用于 iOS 或 Android 或使用 GLUT 的东西。我想要一些“纯”的 OpenGL ES 1.1。

谢谢!

0 投票
1 回答
480 浏览

ipod-touch - OpenGL 工件 - 背面的三角形与旧 iOS 设备前面的三角形重叠

我将我的场景渲染为下面的代码

我的项目使用乌龙引擎

这是两张截图,iPodTouch 4G (iOS 6.0)

iPodTouch 4G (iOS 6.0)

和 iPodTouch 2G (iOS 4.2.1)

和 iPodTouch 2G (iOS 4.2.1)

是什么原因导致出现在后面的屏幕截图中的那些奇怪的工件?

看起来好像背面的三角形与前面的三角形重叠

有时会发生这种情况,因为工件是生涩的,就像存在“z-fighting”一样,但背面的三角形的 z 值低于前面三角形的 z 值

这是顶点和法线z排列的图像

在此处输入图像描述

蓝色箭头是周围面共享的法线,带有红线的三角形表示可能导致这些伪影的原因

0 投票
0 回答
1576 浏览

android - 如何在 libgdx 中创建纹理平面

我来自 FlashBuilder、Flex、Flash 开发领域,正在努力研究如何通过 LibGDX 进入 Android 开发。

我已经完成了环境设置,学习了一些基础知识,但是现在我在研究如何渲染带有纹理的平面时遇到了麻烦。

我发现的大多数演示都是 OpenGL ES2.0,但我需要我的应用程序在两者上运行,所以我尝试寻找有关创建纹理平面的 OpenGL ES1.1 教程,但最终徘徊了几个小时。所以如果有人有任何建议?代码示例?教程?请告诉我。会很棒。

这是到目前为止我得到的代码,但没有显示任何内容(libgdx 演示图像已被注释掉,因此我可以查看它是否呈现任何内容但没有):

}

0 投票
1 回答
103 浏览

android - Galaxy S/Samsung Vibrant 上的 OpenGL 1.1 问题

我正在尝试使用 OpenGL 1.1 一次在三星 Vibrant/Galaxy S 上显示两个 OpenGL 表面视图。该设备拒绝同时显示两者,但不会引发任何错误。在我测试过的所有其他设备上,这都有效。

这可能是Android 2.1的问题吗?

0 投票
1 回答
1075 浏览

android - glGenTextures 不生成名称

我将 OpenGL ES 1.1 与 NDK 一起使用,有时当我调用glGenTextures它时,它不会更改我传入的名称持有者的值(甚至不会将其设置为 0)。

  • glGetError返回 0,没有错误。
  • 所有 GL 代码都在从表面渲染器调用的 JNI 方法onDrawFrame中,因此上下文不应该是问题。(编辑:这是一个错误的假设,是问题的原因)
  • 该代码在某些情况下有效,而在其他情况下无效。如果我在每一帧重复调用,它会在大约 5 次尝试后工作。(我根据要求生成字形)。
  • 第一批纹理至少创建到#32,但之后它会被击中和错过。

有谁知道为什么glGenTextures似乎什么都不做的原因?