问题标签 [opengl-es-3.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.

0 投票
1 回答
773 浏览

opengl-es-3.0 - OpenGL ES3 和 ES2 着色器变量之间的区别

对于 OpenGL ES 3.0,我想知道我们是否仍然使用attribute/ varyingetc 作为变量。或者我们需要切换到in/out变量?

0 投票
2 回答
9124 浏览

glsl - 切换到 GLSL 300 时,遇到以下错误

当我切换到使用带有 GLSL 300 的 OpenGL ES 3 时,我在片段着色器中遇到了以下错误

未声明的标识符 gl_FragColor

使用 GLSL 100 时,一切都很好。

0 投票
1 回答
2090 浏览

java - OpenGL ES 3.0 上的 sRGB 帧缓冲区

我正在使用 Java 开发 OpenGL ES 3.0 Android 项目。我需要实现伽玛校正,并且在某处我读到 OpenGL ES 3.0 将支持 sRGB 纹理。所以我的意图是在渲染到默认帧缓冲区之前调用 glEnable(GL_FRAMEBUFFER_SRGB) 。

但是,当我尝试打电话时

事实证明,没有 GLES30.GL_FRAMEBUFFER_SRGB,但有一些用于 sRGB 纹理格式的常量,如 GLES30.GL_SRGB。

所以,我的问题是:是否可以让 OpenGL ES 3.0 为我做伽玛校正?如果是,如何?

否则,我想,我将不得不手动进行伽马校正。

0 投票
2 回答
250 浏览

c++ - OpenGL ES 3 (iOS) 纹理奇怪 - 想知道为什么

我有一个正常运行的 OpenGL ES 3 程序 (iOS),但我很难理解 OpenGL 纹理。我正在尝试将几个四边形渲染到屏幕上,它们都具有不同的纹理。纹理都是带有独立调色板的 256 色图像。

这是将纹理发送到着色器的 C++ 代码

这是片段着色器

正如我所说,代码有效,但我不确定它为什么有效。几个看似微小的变化打破了它。例如,在 C++ 代码中使用GL_TEXTURE0, andGL_TEXTURE1会破坏它。将数字更改glUniform1i为 0,然后 1 打破它。我猜我不了解 OpenGL 3+ 中的纹理(也许是纹理单元???),但需要一些指导来弄清楚是什么。

0 投票
1 回答
1002 浏览

c++ - 如何在OpenGLES中获取图像变量的绑定点

我试图在我的 GLES 着色器中获取图像变量的绑定点。我可以使用该代码为制服或着色器存储块执行此操作:

不幸的是,没有GL_IMAGE_BINDING. 在桌面 GL 中,我只是使用统一获取图像的位置,GetUniformLocation然后使用glProgramUniform1i. 不幸的是,在 OpenGLES 中,glProgramUniform1i只能用于采样器制服,不适用于图像制服。我需要这个绑定点的原因是因为我正在做自动资源绑定。我的资源可以与统一的变量名称相关联。我希望它们自动分配到正确的图像插槽。到目前为止,除了 GLES 上的图像之外,所有资源都可以正常工作。

0 投票
1 回答
1945 浏览

android - OpenGL ES 3.0 半浮点 (R16F) 纹理

有人可以回答我这条线是怎么来的:

适用于 tegra4 但不适用于 ARM Mali-T628 MP6?

顺便说一句,我没有将它附加到帧缓冲区,我将它用作只读纹理。ARM 上返回的代码是 1280,Tegra 完全“不抱怨”。

另外,我知道 Tegra4 获得了半浮点纹理的扩展,而特定的 Mali 没有该扩展,但既然它是 OpenGL ES 3.0,它不应该支持这样的纹理吗?

0 投票
1 回答
2052 浏览

android - Android opengl es 3 教程?

我第一次尝试学习opengl。在实现时,我看到我正在尝试在 es 2 环境中实现 es 1 代码。经过一番搜索,我发现有一个新的 es 版本,es 3。google 上没有 es 3 的教程。

我应该怎么办?学习 es 2 还是只从 es 3 开始?

谢谢。

0 投票
1 回答
4856 浏览

android - Galaxy S4 Android 4.4.2 上的 OpenGL 3

我是 Android 开发的新手,所以我可能会遗漏一些东西。我的理解是,运行 Android 4.4.2 的三星 Galaxy S4 应该支持 OpenGL ES 3。但是,当我调用时glGetString(GL_VERSION)(在获得 OpenGL ES 2.0 上下文后) ,如果支持的话,OpenGL ES 2.0 build 1.10@235947.我希望得到一个OpenGL ES 3.0字符串。

如果我尝试强制获取 OpenGL ES 3.0 上下文,我的渲染线程会出现异常并且日志消息是throwEglException tid=1477 createContext failed:.

真正奇怪的是,如果我使用 2.0 上下文,openGL ES 3.0 调用工作正常(如数组缓冲区),我只会收到调用是not implemented.!!??的日志消息

我的AndroidManifest.xml有:

有什么我没有设置让我获得 OpenGL 3.0 吗?Galaxy S4 (Verizon BTW) 上的 Android 4.4.2 是否真的不支持 OpenGL ES 3?

这是我的 GLSurfaceView 构造函数中的渲染器设置:

如果我将 3 传递给 setEGLContextClientVersion() 而不是 2,则我的渲染线程会出现“createContext failed:”异常。我还创建了自己的上下文工厂并使用了 setEGLContextFactory(),但结果是一样的。要求大于 2 的版本会导致我的渲染线程出现异常。

0 投票
1 回答
330 浏览

android - 在 Google Cardboard 应用程序中启用 OpenGL 调试

最近发现GLSurfaceView中有一个setDebugFlags方法,

setDebugFlags(int) 参考"

我会用我的支持谷歌纸板的应用程序尝试它,但是当我启用它时:

似乎什么都没有发生(好吧,我的应用程序可能是 OpenGL ES 完美的,没有错误可言,但为什么没有 OpenGL 跟踪adb logcat?)。

我试着打电话:

  1. 在 setRenderer 之前
  2. 在 setEglContext 之前
  3. 就在 Renderer.onSurfaceCreated 内部(使用丑陋的解决方法在渲染器内部引入GLSurfaceView引用......)
  4. setRenderer 初始化后一秒钟(因为我是一个持久的 bas..rd :))

日志已启用(我可以看到“调试”级别的所有内容),并且该应用程序运行良好,否则。

任何帮助找出正在发生的事情将不胜感激!

谢谢

0 投票
2 回答
2480 浏览

android - 在 OpenGL ES 2.0 或 3.0 中生成深度纹理

我有一个在 Android 中使用 OpenGL ES 渲染的场景(使用 Java 库)。我想在场景中应用一些效果,例如景深。我找到了一个不错的散景着色器,它需要深度纹理来完成这项工作。那么我需要的是生成一个深度纹理以传递给着色器。我已经在互联网上搜索了一天半,试图弄清楚这一点,但似乎找不到一个很好的例子来说明如何从现有场景中生成深度纹理。看来我需要做几遍,可能使用屏幕外渲染到帧缓冲区,然后从中生成深度纹理以传递给我的散景着色器以实际渲染场景。

如何生成深度纹理?一个很好的工作示例将不胜感激。