问题标签 [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 投票
2 回答
1247 浏览

android - Android上的OpenGL ES 1.1:Q纹理坐标没有任何效果

我正在为 Android 开发一个 OpenGL ES 1.1 应用程序(OpenGL 调用是由通过 NDK 调用的 C 代码进行的)。

我的问题是我正在尝试使用 Q 纹理坐标以及通常的 (S, T) 纹理坐标。但是,我放入 Q 中的任何内容都没有任何明显的效果。

(除此之外:想要使用 Q 坐标的原因是我想将矩形纹理映射到空间中具有正确透视效果(即非仿射)的梯形四边形——如http://www.xyzw 所述。我们/~cass/qcoord/)。

我尝试设置 Q 坐标(默认 1.0f 以外的其他值)的方法是通常的:我提供 4 个纹理坐标而不是通常的 2。我尝试将各种值放在 Q 坐标中(甚至进入通常未使用的 R 坐标,以防两者混淆)对我的纹理的明显影响为零。我希望看到 Q != 1.0 对我的纹理产生的影响——例如,每个纹理坐标的 Q = 0.5 应该只是每个派生 (S, T) 值的两倍——实际上,将表观纹理大小减半。但没有变化。

我不能真正发布完整的代码,但这里是基础:

我的顶点结构定义如下:

创建每个顶点缓冲区对象(VBO):

以下是我给出顶点和文本坐标指针的方式:

这一切都很好,除了我说的,我的 Q 坐标没有任何区别。如果将我的glTextCoordPointer调用更改为仅提供 2 或 3 个坐标,则程序行为没有变化:

我的问题是:为什么我的 Q 纹理坐标没有任何效果?如果它是特定于设备或 Android API 级别的,我能否找出它适用于哪些设备或 API 级别?如果我不能依靠 Q 坐标做任何有用的事情,我还能如何实现相同的效果(逼真的、非仿射纹理映射到梯形)?

我正在实际的 Android 设备上测试我的代码:HTC Wildfire S。

为了方便起见,我正在使用SOIL 库加载我的纹理。

更新

我已经为第 6 课下载了 NeHe Android 端口。这使用 Java OpenGL ES 接口(无 NDK)。我在其中添加了随机的 R 和 Q 纹理坐标,同样,没有明显的效果。

更新 2

我放弃了尝试让 Q 纹理坐标产生任何效果;我认为并非所有设备都支持它。仍然对这方面的权威信息感兴趣。

相关链接:

http://www.xyzw.us/~cass/qcoord/

http://www.gamedev.net/topic/419296-skewedsheared-texture-mapping-in-opengl

http://hacksoflife.blogspot.com/2009/11/perspective-correct-texturing-q.html

3D纹理坐标的透视校正

http://sfml-dev.org/forum/viewtopic.php?t=2893

http://fly.cc.fer.hr/~unreal/theredbook/chapter09.html

0 投票
1 回答
247 浏览

ios - 在 Open GL ES 视图上覆盖标签

我试图在我的 Open GL ES 视图上覆盖一个标签(以及将来的一个 UI 图像),但什么也看不到,知道为什么吗?用户交互和多点触控被选中。我很确定它与这个 applicationDidFinishLaunching 调用有关,但不确定它可能是什么:

在此处输入图像描述

0 投票
2 回答
186 浏览

ios - 每个“四边形”上的相同纹理绑定

我有 6 个正方形,由 2 个三角形组成,每个正方形都应该有不同的纹理映射到它上面。相反,每个纹理上都有最后一个绑定的纹理,而不是它自己的。这是我的drawView和setView:

0 投票
1 回答
183 浏览

android - 如何在 2D opengl es 场景中获得绝对平移

我有一个在 2d opengl es 1.1 中呈现的可平移/可缩放图像。缩放后,如何获得从图像左侧到可视区域左侧的绝对位置?这是一张图片来澄清我的意思:

在此处输入图像描述

0 投票
0 回答
189 浏览

java - 将纹理的一部分复制到另一个纹理

我开始学习 android 游戏编程,遇到了一个问题,到目前为止我还没有找到可行的解决方案。基本上,我正在尝试为纹理绘制平铺背景,然后每帧只绘制一次该纹理,而不是一遍又一遍地重绘所有平铺。瓷砖已加载到另一个纹理上。

我的问题是,我在opengl es 1.1中找不到将子纹理复制到另一个纹理的方法。我找到了一些关于使用扩展和帧缓冲区对象的信息,但到目前为止我一直无法让它工作。

我希望它会存在一种方法来获取纹理的像素数据,然后使用 glTexSubImage2D 或类似方法来填充背景纹理......

任何指针将不胜感激。

谢谢!

0 投票
1 回答
816 浏览

android - 某些手机​​上未加载纹理

我有几个用户报告他们的屏幕上有白块,我不确定是什么导致了这个问题。它似乎在大多数手机上都可以正常工作,但我不确定可能是什么问题。(已知不适用于 Galaxy Nexus 和 Droid Pro,但在我原来的 Droid 上运行良好)。我只是难住了,下面是我的代码和用户发布的问题截图。知道是什么原因造成的吗?它是用 ES 1.1 编写的。未加载的是透明的png

在此处输入图像描述

代码:

0 投票
1 回答
1052 浏览

android - Android OpenGL ES 1.1:从模板缓冲区读取

使用 Android OpenGL ES 1.1 (HTC Desire)...

我一般遇到的问题是这样的:

我在复杂的场景中渲染了各种 3D 对象。我想检查用户是否单击了特定对象。该对象可能被部分隐藏,因此可能在场景中显示为几乎任何形状。如果用户单击场景中可见的对象的一部分,我只想允许“选择”对象。这意味着我不能对对象交集使用基于矢量的计算,因为这些计算不能轻易考虑到对象的隐藏区域。

于是我想出了一个主意……

我设置了模板缓冲区,以便在对象可见的任何地方,模板缓冲区都填充 1,而模板缓冲区中的其他任何地方都为 0。当用户单击场景中的特定像素时,我只需要检查模板缓冲区即可查看它是否包含 1 或 0,指示对象是否被单击。

这在 PC 上完美运行,但在 Android OpenGL ES 1.1 上,我似乎无法使用 glReadPixels() 从模板缓冲区读取数据,因为不支持 GL_STENCIL_INDEX。

有谁知道是否有办法从模板缓冲区中读取这个 0/1?或者谁能​​想到一个更好的算法来确定我的对象是否被点击?

非常感谢

0 投票
1 回答
1127 浏览

android - Android:在 OpenGL 1.1 中使用混合创建模糊纹理

有没有人在 Android 上使用混合来模糊纹理创建模糊纹理取得了很大成功?

我正在考虑这里描述的技术,但关键是获取加载的纹理,然后对其应用模糊,以便绑定纹理本身模糊。

0 投票
1 回答
728 浏览

iphone - OpenGL ES如何正确组合Orthof和Frustum

我开始学习适用于 iPhone 的 OpenGL ES 1.1,并想在几个 3D 对象后面以正交投影绘制 2D 图像。使用 Jeff Lamarche 的教程和用于 iPhone 的 Pro OpenGL ES 一书,我想出了以下几种方法来尝试做到这一点。如果我禁用对drawSunInRect3D 对象的调用,则渲染得很好,我可以使用触摸控件等移动它们。如果我取消注释该调用并尝试绘制太阳图像,图像会出现在CGRect我提供的图像中,但我看不到任何我的其他 3D 对象 - 屏幕的其余部分是黑色的。我试图在不同的地方禁用/启用深度测试,将不同的参数传递给,并在矩形周围移动,但只有在调用该方法glOrthof()时我才会继续获取太阳图像。drawSunInRect我假设它覆盖了我的 3D 对象。

更新

我将 draw sun 方法修改为只有 1 次推送和 1 次弹出GL_PROJECTION。我仍然有同样的问题。太阳图像出现,但我看不到我的 3D 对象。我试图重新安排对渲染方法的调用,以便首先渲染 3D 对象,但我得到了相同的结果。我将不胜感激有关如何同时查看我的正交纹理和 3D 对象的其他想法。

0 投票
2 回答
337 浏览

java - 为每个要绘制的项目调用 gluLookAt()?

伪代码:

这是正确的(或至少不是非常糟糕的)方法吗?