问题标签 [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.
c - DisplayContext、displaySurface 和 displayBuffer 之间的区别?
平时在图形和显示上工作,我们会遇到Displaybuffer、DisplaySurface & DisplayContext之类的词?这些术语有什么不同?
iphone - iPhone glTexImage2D 和 glReadPixels 上的 BGRA
查看文档,我应该能够将 BGRA 用于纹理的内部格式。我正在为纹理提供 BGRA 数据(将 GL_RGBA8_OES 用于 glRenderbufferStorage,因为似乎不允许使用 BGRA)。但是,以下方法不起作用:
虽然这给了我一个黑框:
这确实有效,但是蓝色/红色是反转的(我将 BGRA 数据提供给纹理):
...为什么我不能始终使用 BGRA?我确实注意到 glRenderbufferStorage 似乎不接受任何 BGRA 格式......我真的很困惑。BGRA 是我的数据唯一合适的格式,因为它来自 iphone 的相机。
android - 如何在android上显示粒子?
我正在android上编写一个opengl es程序(NDK),我需要渲染一些粒子。谁能告诉我如何在android上显示粒子?谢谢!
android - glDepthMask(GL_FALSE) 会破坏某些 GPU 上的帧缓冲区
glDepthMask(GL_FALSE)
我有时会在渲染帧期间禁用深度缓冲区写入。这在某些 GPU(如摩托罗拉 Droid 的 PowerVR)上工作得非常好,但在带有 Adreno GPU 的 HTC EVO 上,我最终会发现帧缓冲区完全是垃圾(我看到我在某处渲染的网格的痕迹,但是整个屏幕大多是垃圾)。
如果我一直强制 glDepthMask 为真,那么一切正常。
我需要在部分 alpha 渲染期间关闭 glDepthMask。关闭深度写入会导致帧缓冲区被破坏的原因是什么?
opengl-es - OpenGL ES 2.0 以什么顺序读取矩阵的元素?
我很困惑。是吗:
或者是其他东西?
android - 旋转 Android OpenGL ES 2.0 视口
我为我的 Android 应用程序获得的 OpenGL ES 2.0 渲染上下文处于纵向模式 (480x800),但我想以横向模式 (800x480) 进行渲染。
如何旋转 OpenGL 视口,最好不修改发送到着色器的矩阵?
我有一堆着色器,其中一些使用身份矩阵(如字体渲染器)。所以看起来我需要在几个地方向矩阵添加一个旋转组件。有没有办法以某种方式全局旋转视口?
我可以以某种方式从 Android 请求风景渲染上下文吗?
这个问题是否有任何架构模式?
iphone - 当我切换到纯 alpha (A8) pixelFormat 时,为什么我的片段着色器无法读取 alpha 信息?
我正在创建一个使用 OpenGL ES 2.0 的 iOS 应用程序。我对 OpenGL 有点陌生,所以这可能是一个微不足道的错误。
我创建了一个简单的着色器来处理使用 alpha 通道用另一个纹理遮盖一个纹理。蒙版纹理初始化如下:
glGenTextures(1, &name); glBindTexture(GL_TEXTURE_2D, 名称);
glTexParameterf(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glGenFramebuffersOES(1, &buffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, 缓冲区);
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, 名称, 0);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
然后(稍后)我在遮罩纹理上绘制一些东西,并将遮罩纹理链接到这个片段着色器以将其应用到另一个纹理:
这完全呈现了我想要的样子。但是,为了减少绑定蒙版纹理缓冲区的开销(这似乎很大),我尝试对蒙版纹理使用 8 位仅 alpha 像素格式。但是,如果我从 RGBA 设置中更改代码:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1024, 768, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
...仅 alpha 版:
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, 1024, 768, 0, GL_ALPHA, GL_UNSIGNED_BYTE, 缓冲区);
...片段着色器无法绘制任何内容。因为我首先只使用蒙版纹理中的 alpha,所以它似乎应该继续工作。任何想法为什么它不?
android-ndk - C 矩阵库,适用于 Android 上的 opengl (NDK)
我正在使用带有 NDK 的 opengl es 2.0 在 C 中编写一个渲染例程。我对矩阵图形转换的(速度超过精度)库以及您可以推荐的任何最佳实践感兴趣。
编写自己的函数并非不可能,但我想在重新发明轮子之前先在这里问一下。谢谢。
android - 无法编译已知在 android 上很好的着色器
我从 android SDK 示例中获取了以下着色器:
着色器来自他们的 opengl es 2.0 示例,当我编译示例时工作正常。
但是,当我尝试在我的程序中编译着色器时,我得到:
还有一个事实是该方法:
不返回任何信息(据我从谷歌研究中了解,我认为这是一个已知的错误)
有谁知道我做错了什么?
谢谢,杰森
android - Android,触摸屏时jni中的openGL滞后
我目前正在 Android 平台上测试我的游戏所需的所有功能。我只修改了 hello-gl2 示例代码,并在两个渲染通道中添加了一些纹理、VBO、FBO 和简单着色器。
问题是,当我让应用程序在不触摸屏幕的情况下运行时,我有大约 35-45 fps。但是如果我开始连续触摸屏幕,渲染就会开始滞后!那么这是一个问题,因为输入和渲染在同一个线程中(正如 a 认为的那样?),甚至可以修复吗?如果我不能解决这个延迟问题,我的游戏可能无法运行得足够好,无法正常玩。(有一些重渲染的东西)
//提前致谢!